deque是一种双端队列容器,与vector一样,也可以看做是一种动态数组形式。与vector不同的是,deque可以高效率地在头部和尾部插入/移除元素,而在中间进行同样操作则效率较低。
1、新建deque对象:
根据deque的构造函数,可以采用不同的方法定义deque对象,以int类型的deque举例:
deque<int> deqInst; deque<int> deqInst(10); deque<int> deqInst(10, 5); deque<int> deqInst(anotherDeq); deque<int> deqInst(firstItr, lastItr);这几种方法分别定义了一个空的deque对象,一个初始size为10的deque对象, 一个初始size为10且每个元素的值为5的deque对象,根据另一个对象anotherDeq而构建的对象,一个根据两个迭代器firstItr和lastItr构建的有范围的deque对象。
2、向deque中插入和从deque中获取元素:
STL定义了方法可以高效地在deque的头部和尾部获取元素。push_front()和push_back()分别用于在deque头端和尾端插入数据,pop_front()和pop_back()用于在头端和尾端获取数据。使用方法例如:
deque<int> deqInst; deqInst.push_front(1);//1 deqInst.push_front(0);//0 1 deqInst.push_back(2);//0 1 2 int frt = deqInst.pop_front();//frt ==0; deqInst = [1,2] int bak = deqInst.pop_back();//bak == 2; deqInst = [1];
3、deque的大小和容积
度量deque的大小和容积提供了一下方法:
deque::size();——返回deque实例的大小,即容器中元素的个数;
deque::resize (size_type n, value_type val = value_type());——重新设置容器的大小,新添加的元素的值初始化为val;
deque::max_size();——返回容器大小允许的最大值;
4、返回deque中的元素
deque中提供了多个方法返回容器中的第一个或者最后一个元素,主要分为两大类:
返回第一个元素:begin();front();rbegin();
返回最后一个元素:end();back();rend();
这几个函数的区别在于,begin()和end()函数返回给一个迭代器,rbegin()和rend()返回给一个反向迭代器,而front()和back()返回一个容器元素类型的引用变量;
5、deque中元素的操作
deque容器提供了多种可供元素操作的方法,主要有:
(1)元素访问:at(n);使用at()方法同直接像数组一样用下标检索类似;
(2)元素重置:assign();该函数重载了不同的方法,可以实现某个具体值或者某一段连续内容的重置;
(3)元素内容交换:swap();
(4)元素的插入和删除:除了之前叙述过的push和pop方法,还有insert(),erase()和clear()方法,分别实现在特定位置插入、删除元素,和清空容器。