deque容器是双端数组,既可以向头部插入或者删除也可以向尾部插入或者删除。

  1. deque与vector的区别;

              vector对于头部插入删除效率低,deque相比于vector,由于在头部插入删除时不用移动大量的元素,效率较高;

    访问元素时,vector的速度比deque快,这和他们的内部结构有关。vector内部是一段连续的空间。而deque的

    工作原理如下所示

  deque内部的中控器,维护每段缓冲区中内容,中控器里的每个节点对应一个缓冲区,每个节点存储的是每段缓冲区地址。看起来像一片连续的存储空间。

   2. deque的构造函数

    

1 deque<int> d1;   //默认构造
2 
3 deque<int> d2(d1.begin(),d1.end()); //区间构造
4 
5 deque<int > d3(10,20);   //n个ele的方式构造
6 
7 deque<int> d4(d1)  ;//拷贝构造

  3. deque容器的赋值操作

 1 deque<int >d1;
 2 
 3 deque<int>d2;
 4 d2=d1;  //operator=
 5 
 6 //assign
 7 
 8 deque<int> d3;
 9 d3.assign(d2.begin(),d2.end());  //以区间方式
10 
11 dequeu<int> d4;
12 d4.assign(10,100);

  4.deque容器大小操作

1 deque<int> d1;
2 //判断容器是否为空,如果为空返回true
3 d1.empty();
4 //容器的大小,它没有容量的概念
5 d1.size();
6 //重新指定大小
7 d1.resize(10); //默认按0填充
8 d1.resize(10,1);//超出部分按1填充

  5. deque插入和删除

 1 deque<int>d1;
 2 d1.push_back(1);//尾插
 3 d1.push_front(2);//头插
 4 
 5 d1.pop_back();//删除容器中的最后一个元素
 6 d1.pop_front();//删除容器中的第一个元素
 7 
 8 insert(pos,elem);  //在指定位置插入一个元素
 9 insert(pos,n,elem); //指定位置插入n个ele;
10 insert(pos,d1.begin(),d1.end()); //知道位置插入区间元素
11 
12 clear();//清空
13 erase(d1.begin(),d1.end());  //相当于clear,返回下一个数据的位置
14 erase(pos);  //删除某一个位置,返回下一个位置

  6. 数据存取,通过at(),[],front(),back()可以访问到相应的元素

  7. deque容器排序  

 1     deque<int>d1;
 2     //尾插
 3     d1.push_back(10);
 4     d1.push_back(20);
 5     //头插
 6     d1.push_front(30);
 7     d1.push_front(40);
 8     d1.push_back(20);
 9         
10     sort(d1.begin(), d1.end()); //默认升序 vector同意适用

 

stack容器是一种先进后出的容器

 1 stack <int> s;
 2 //入栈
 3 s.push(1);
 4 s.push(2);
 5 //判断是否为空
 6 s.empty();
 7 //出栈
 8 s.pop();
 9 //返回栈顶元素
10 s.top();
11 //返回栈的大小
12 s.size();