Deque容器
deque是“double-ended queue”的缩写,和vector一样都是STL的容器,deque是双端数组,二vector是单端的。
deque在接口上合vector非常相似,在许多操作的地方可以直接替换。
deque可以随机存取元素(支持索引值直接存取,用[]操作符或 at() 方法)
deque头部和尾部添加或者移除元素都非常快速,但是在中部安插元素或移除元素都比较耗时。
使用时需要添加头文件:#include <deque>
deque容器的构造函数:
deque<T> deqT; //默认构造形式 deque <int> deqInt; //一个存放int的deque容器 deque <float> deqFloat //一个存放 float的deque容器。 /*尖括号内还可以设置指针类型或者自定义类型*/ deque(beg,end); //构造函数将[beg,end]区间中得元素拷贝给本身。注意该区间是左闭右开的区间。 deque(n,elem); //构造函数将n 个 elem拷贝给本身 deque(const deque &deq); //拷贝构造函数
deque的赋值:
deque.assign(beg,end); //将[beg,end]区间中的数据拷贝赋值给本身(注意该区间是左闭右开的区间) deque.assign(n,elem); //将n个elem拷贝赋值给本身 deque& operator= (const deque &deq); //重载等号操作符 deque.swap(deq); //将deq与本身的元素互换
deque的大小:
deque.size(); //返回容器中元素的个数 deque.empyt(); //判断容器是否为空 deque.resize(num); //重新指定容器的长度为 num,如果容器边长,则已默认值填充新的位置,若干容器变短,则将末尾超出的元素删除 deque.resize(num,elem); //重新指定容器的长度,若容器变长,则以elem值填充新的位置,若容器变短,则将末尾超出的元素删除
deque的末尾添加移除操作:
deque.push_back(elem); //在容器尾部添加一个数据 deque.push_front(elem); //在容器头部插入一个数据 deque.pop_back(); //删除容器最后一个数据 deque.pop_front(); //删除容器的第一个数据
deque的数据存取:
deque.at(idx); //返回索引idx所指的数据,如果idx越界,抛出out_of_range. deque[idx]; //返回索引idx所指的数据,如果idx越界,不抛出异常,直接出错 deque.front(); //返回第一个数据 deque.back(); //返回最后一个数据
deque的插入:
deque.insert(pos,elem); //在pos位置插入一个elem元素的拷贝,返回新数据的位置 deque.insert(pos,n,elem); //在pos位置插入n个elem数据,无返回值 deque.insert(pos,beg,end); //在pos位置插入 [beg,end] 区间的数据,无返回值。
deque的删除:
deque.clear(); //移除容器的所有数据 deque.erase(beg,end); //删除[beg,end] 区间的数据,返回下一个数据的位置 deque.erase(pos); //删除pos位置的数据,返回下一个数据的位置。