STL容器分析--deque】的更多相关文章

deque,故名思义,双向队列.可以在头尾进行插入删除. 而STL中采用了链表+线性表的数据结构来实现deque,因而除了满足双向队列的特点以外,还支持随机访问. 下面,贴一段代码. 总览:双向队列是由链式线性表+顺序线性表组成.支持随机访问 首先看下定义:   template >       class deque : protected _Deque_base 可知,需先分析_Deque_base   template         class _Deque_base {        …
1.deque容器概念 deque是"double-ended queue"的缩写,和vector一样都是STL的容器,唯一不同的是:deque是双端数组,而vector是单端的. . Deque 特点: deque在接口上和vector非常相似,在许多操作的地方可以直接替换. deque可以随机存取元素(支持索引值直接存取,用[]操作符或at()方法) deque头部和尾部添加或移除元素都非常快速, 但是在中部安插元素或移除元素比较费时. 使用时,包含头文件:#include <…
一.deque的中控器       deque是连续空间(至少逻辑上看来如此),连续线性空间总令我们联想到array或vector.array无法成长,vector虽可成长,却仅仅能向尾端成长.并且其所谓的成长原是个假象,其实是(1)另觅更大空间:(2)将原数据复制过去:(3)释放原空间三部曲.假设不是vector每次配置新空间时都有留下一些余裕.其成长假象所带来的代价将是相当高昂.       deque系由一段一段的定量连续空间构成.一旦有必要在deque的前端或尾端添加新空间,便配置一段定…
所谓deque,是"double-ended queue"的缩写; 它是一种动态数组形式,可以向两端发展,在尾部和头部插入元素非常迅速; 在中间插入元素比较费时,因为需要移动其它元素;(No) 双端队列容器,在序列的两端放置和删除元素是高效的; 而vector只是在序列末尾插入才是高效的.  C++ Code  1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484…
STL 对这个序列可以进行查找,插入删除序列中的任意一个元素,而完成这些操作的时间同这个序列中元素个数的对数成比例关系,并且当游标指向一个已删除的元素时,删除操作无效.而一个经过更正的和更加实际的定义应该是:一个集合(set)是一个容器,它其中所包含的元素的值是唯一的.这在收集一个数据的具体值的时候是有用的.集合中的元素按一定的顺序排列,并被作为集合中的实例.一个集合通过一个链表来组织,在插入操作和删除操作上比向量(vector)快,但查找或添加末尾的元素时会有些慢.具体实现采用了红黑树的平衡二…
deque.clear(); //移除容器的所有数据 1 #include <iostream> 2 #include <deque> 3 4 using namespace std; 5 6 int main() 7 { 8 int num[] = { 111,222,333,444,555 }; 9 deque<int> deqInt_A(num, num + size(num)); 10 11 cout << "deqInt_A中的元素个数为…
1. deque 的大小 deque.size();              //返回容器中元素的个数 1 #include <iostream> 2 #include <deque> 3 4 using namespace std; 5 6 int main() 7 { 8 deque<int> deqInt_A; 9 deqInt_A.assign(4, 111); 10 11 cout << "deqInt_A 中的元素个数为:"…
1. deque 的数据存取 这个部分和 vector 几乎一样 第一  使用下标操作 dequeName[0] = 100; //小心越界 第二  使用at 方法 如: dequeName.at(2) = 100; //小心越界 第三  接口返回的引用 dequeName.front() 和 deqIntA.back() 如下代码: 1 #include <iostream> 2 #include <deque> 3 4 using namespace std; 5 6 int…
deque.insert(pos,elem); //在pos位置插入一个elem元素的拷贝,返回新数据的位置. 1 #include <iostream> 2 #include <deque> 3 4 using namespace std; 5 6 int main() 7 { 8 deque<int> deqInt_A, deqInt_B; 9 10 deqInt_A.push_back(1); 11 deqInt_A.push_back(2); 12 deqInt…
deque 的赋值分下边4种方法: deque.assign(beg,end); //将[beg, end)区间中的数据拷贝赋值给本身.注意该区间是左闭右开的区间. 1 #include <iostream> 2 #include <deque> 3 4 using namespace std; 5 6 int main() 7 { 8 deque<int> deqInt_A, deqInt_B; 9 10 deqInt_A.push_back(1); 11 deqIn…