STL源码剖析—序列容器
对于STL中的容器,存在一定的内含关系,例如,heap内含一个vector,priority-queue内含一个hep,stack和queue都含有一个deque,set/map/multiset/multimap都内含一个RB-tree,hash_x都内含一个hashtable。
对于序列容器来说,vector和list的插入都是在指向迭代器之前进...
分类:
其他好文 时间:
2014-12-08 23:03:18
阅读次数:
273
有时代码看起来是正确的, 可实际上就会有一些没想到的疏忽, 考察以下代码:std::deque ideq{ 5, 13, 2, 25, 7, 17, 20, 8, 4};std::priority_queue priorityQueue (ideq.begin(), ideq.end());for ...
分类:
其他好文 时间:
2014-12-08 12:22:22
阅读次数:
148
Vector是一种可以默认使用的序列类型,当很频繁地对序列中部进行插入和删除时应该用lit,当大部分插入和删除发生在序列的头或尾时可以选择deque这种数据结构。
STL是建立在泛化上的。数组泛化了容器,参数化了所包含的对象的类型。函数泛化为算法,参数化了所有的迭代器的类型。指针泛化为迭代器,参数化了所指向的对象的类型。
独立的容器类型泛化为序列或关联容器,...
分类:
其他好文 时间:
2014-12-06 10:09:40
阅读次数:
135
有一段时间没有更新了。接着上节继续吧。Queue除了前面介绍的实现外,还有一种双向的Queue实现Deque。这种队列允许在队列头和尾部进行入队出队操作,因此在功能上比Queue显然要更复杂。下图描述的是Deque的完整体系图。需要说明的是LinkedList也已经加入了Deque的一部分(Link...
分类:
编程语言 时间:
2014-12-03 00:07:50
阅读次数:
216
1) Dequeue can quickly insert or delete both at the front or the end. However, vector can only quickly insert or delete at the end.2) Memory allocatio...
分类:
编程语言 时间:
2014-11-28 14:15:34
阅读次数:
145
deque双向队列是一种双向开口的连续线性空间,可以高效的在头尾两端插入和删除元素,deque在接口上和vector非常相似,下面列出deque的常用成员函数:deque的实现比较复杂,内部会维护一个map(注意!不是STL中的map容器)即一小块连续的空间,该空间中每个元素都是指针,指向另一段(较...
分类:
其他好文 时间:
2014-11-26 16:05:44
阅读次数:
165
数组内存连续分配,长度大小固定,内置的最基础的数据结构之一。支持随机访问和随机存储。该类型数据所占内存空间最小。Vector是C++ STL中的一个容器。和数组类似,它拥有一段连续的内存空间,并且起始地址不变,因此它能非常好的支持随机存取(即使用[]操作符访问其中的元素),但由于它的内存空间是连续的...
分类:
其他好文 时间:
2014-11-20 13:24:11
阅读次数:
125
vector ,deque和list顺序性容器:向量vector:是一个线性顺序结构。相当于数组,但其大小可以不预先指定,并且自动扩展。它可以像数组一样被操作,由于它的特性我们完全可以将vector看作动态数组。在创建一个vector后,它会自动在内存中分配一块连续的内存空间进行数据存储,初始的空间...
分类:
其他好文 时间:
2014-11-20 11:42:27
阅读次数:
157
C++STL开发技术导引第一篇 预备知识 第1章 C++编程技术 第2章 C++模板技术 第3章 C++ I/O流技术 第二篇 C++STL泛化技术基础 第4章 C++STL泛型库概述 第5章 C++STL泛化技术分析 第三篇 C++STL容器技术 第6章 vector向量容器 第7章 deque....
分类:
其他好文 时间:
2014-11-19 15:50:59
阅读次数:
248
Leetcode更新到155题了,这个easy的题acceptance却不高,我好奇的点开了它。Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.push(...
分类:
编程语言 时间:
2014-11-14 19:24:03
阅读次数:
240