STL容器之deque

来源:互联网 发布:aws centos 编辑:程序博客网 时间:2024/05/29 08:18

deque双端队列(读音:deck,意即:doublequeue,#include<qeque>)容器类与vector类似,支持随机访问和快速插入删除,它在容器中某一位置上的操作所花费的是线性时间。与vector不同的是,deque还支持从开始端插入数据:push_front(),pop_front()。此外deque也不支持与vector的capacity()、reserve()类似的操作。

deque的成员函数:begin(),end(),push_back(),pop_back(),push_front(),pop_front(),front(),back(),empty(),at(),size(),assign(),insert(),erase()。

#include <iostream>#include <deque>using namespace std;typedef deque<int> INTDEQUE;//有些人很讨厌这种定义法,呵呵//从前向后显示deque队列的全部元素void put_deque(INTDEQUE deque, char *name){    INTDEQUE::iterator pdeque;//仍然使用迭代器输出    cout << "The contents of " << name << " : ";    for(pdeque = deque.begin(); pdeque != deque.end(); pdeque++)        cout << *pdeque << " ";//注意有 "*"号哦,没有"*"号的话会报错    cout<<endl;}//测试deqtor容器的功能int main(){//deq1对象初始为空    INTDEQUE deq1;       //deq2对象最初有10个值为6的元素      INTDEQUE deq2(10,6);      //声明一个名为i的双向迭代器变量    INTDEQUE::iterator i;        //从前向后显示deq1中的数据    put_deque(deq1,"deq1");    //从前向后显示deq2中的数据    put_deque(deq2,"deq2");    //从deq1序列后面添加两个元素deq1.push_back(2);deq1.push_back(4);cout<<"deq1.push_back(2) and deq1.push_back(4):"<<endl;    put_deque(deq1,"deq1");    //从deq1序列前面添加两个元素deq1.push_front(5);deq1.push_front(7);cout<<"deq1.push_front(5) and deq1.push_front(7):"<<endl;    put_deque(deq1,"deq1");    //在deq1序列中间插入数据deq1.insert(deq1.begin()+1,3,9);cout<<"deq1.insert(deq1.begin()+1,3,9):"<<endl;    put_deque(deq1,"deq1");    //测试引用类函数cout<<"deq1.at(4)="<<deq1.at(4)<<endl;cout<<"deq1[4]="<<deq1[4]<<endl;deq1.at(1)=10;deq1[2]=12;cout<<"deq1.at(1)=10 and deq1[2]=12 :"<<endl;    put_deque(deq1,"deq1");    //从deq1序列的前后各移去一个元素deq1.pop_front();deq1.pop_back();cout<<"deq1.pop_front() and deq1.pop_back():"<<endl;    put_deque(deq1,"deq1");    //清除deq1中的第2个元素deq1.erase(deq1.begin()+1);cout<<"deq1.erase(deq1.begin()+1):"<<endl;    put_deque(deq1,"deq1");    //对deq2赋值并显示deq2.assign(8,1);cout<<"deq2.assign(8,1):"<<endl;    put_deque(deq2,"deq2");}