- 博客(6)
- 资源 (14)
- 收藏
- 关注
原创 hash_map容器
hash_map采用separate chaining解决冲突,每个key值会通过hash函数映射到对应的bucket(通过vector实现),如果两个key值的hash值相等,那么这个bucket中会放入多个元素,通过next指针做链接。 hash_map通过hashtable来实现: template <class _Key, class _Tp, class _HashFcn, clas
2016-09-06 21:56:12 332
原创 queue和stack容器
queue和stack属于daptor适配器容器,通过deque来实现 queue是FIFO先进先出,stack是FILO先进后出 同时STL还提供了一个优先级的队列priority_queue,保证优先级最高的总是在头部,但是不保证FIFO queue的实现: template <class _Tp, class _Sequence __STL_DEPEND
2016-09-06 21:42:19 196
原创 deque容器
之前有写到的vector易于做random_access,对于插入涉及到内存重分配,而对于list适合做insert/erase但是对于随机取值只能遍历。 是不是有一种结合两者的做法呢?那就是deque。 deque的实现思路是这样的: (1)内存的不连续,划分成一段一段的,每段可以存储相同个数的元素。 (2)每段内存存储的地址用一个专门的数组保存起来。 (3)对于随机取值可以直接计算出
2016-08-31 14:50:06 176
原创 heap最大(小)堆
首先是概念,堆属于完全二叉树。 完全二叉树百度百科描述是: (1)若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数。 (2)第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。 最大堆对于完全二叉树的节点数值要求是: 根结点的键值是所有堆结点键值中最大者,且每个结点的值都比其孩子的值大。也就是说左右子树也是一个大顶堆。 堆一般通过数组表示
2016-08-27 00:03:13 434
原创 list容器
继续昨天的写list容器的总结 class list : protected _List_base _list_base包含着链表节点的指针 _List_node* _M_node; Node的组成由3个变量 struct _List_node_base { _List_node_base* _M_next; //指向前一节点指针 _List_node_base* _M_prev;
2016-08-23 22:52:53 290 2
原创 vector容器
诸多刚毕业工作的程序员,面试求职c++时基本会问到用过些什么容器。问的多了也就自己看了看侯杰老师的STL剖析。 第一个是vector,先看代码说话。 先找到class vector template class vector : protected _Vector_base vector是继承了_Vector_base,这里模板参数1就是我们经常用得到的容器里包含的对象。第二个模板
2016-08-22 20:52:01 312
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人