STL中的序列式容器——deque(双端队列)

STL中的序列式容器——deque(双端队列)

  deque 是双端队列类型,它可以容纳许多类型的数据,如若干个整数,所以称其为容器。
  deque是C++ STL的一个重要成员,使用它时需要包含头文件:

#include <deque>;

  deque和vector非常相似,属于序列式容器,都是采用动态数组来管理元素,提供随机存取,并且有着和vector一样的接口,不同的是deque具有首尾两端进行快速插入、删除的能力。

一、deque 的初始化

有以下方式,举例说明如下:

deque<int> a;
deque<int> a(10); //定义了10个整型元素的双端队列(尖括号中为元素类型名,它可以是任何合法的数据类型),但没有给出初值,其值是不确定的。
deque<int> a(10,1); //定义了10个整型元素的双端队列,且给出每个元素的初值为1
deque<int> a(b); //用b向量来创建a双端队列,整体复制性赋值
deque<int> a(b.begin(),b.begin+3); //定义了a值为b中第0个到第2个(共3个)元素
int b[7]={
    
    1,2,3,4,5,9,8};deque<int> a(b,b+7); //从数组中获得初值

二、deque 对象的重要操作

列举如下:

a.back(); //返回a的最后一个元素
a.front(); //返回a的第一个元素
a[i]; //返回a的第i个元素,当且仅当a[i]存在
a.at(i); //返回位置n处的元素。a.at(i)与a[i]差不多
a.clear(); //清空a中的元素
a.empty(); //判断a是否为空,空则返回ture,不空则返回false
a.push_back(5);//在a的最后一个向量后插入一个元素,其值为5
a.push_front(5);//在a的最前一个向量前插入一个元素,其值为5
a.pop_front();//从容器的首部移走数据;
a.pop_back();//从容器的尾部移走数据;
a.size(); //返回a中元素的个数
a.resize(10); //将a的现有元素个数调至10个,多则删,少则补,其值随机
a.resize(10,2); //将a的现有元素个数调至10个,多则删,少则补,其值为2
a.swap(b); //b为双端队列,将a中的元素和b中的元素进行整体性交换
a==b; //b为双端队列,双端队列的比较操作还有!=,>=,<=,>,<,对于==来说,首先比较它们的大小,若size相等,则依次比较元素;对于其他运算符,依次比较元素

特别注意:

  deque的函数操作还有很多,大部分操作和vector的用法相同,但从双端队列的特性出发,并不支持相关函数,因此本文只列举了双端队列支持且常用的函数。

猜你喜欢

转载自blog.csdn.net/hyl1181/article/details/108563845