双端队列(qeque容器类):#include

来源:互联网 发布:人间失格动画知乎 编辑:程序博客网 时间:2024/04/29 23:34

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

 

 

//stl_cpp_9.cpp
#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容器的功能
void main(void)
{
//deq1对象初始为空
INTDEQUE deq1;
//deq2对象最初有10个值为6的元素
INTDEQUE deq2(10,6);
//deq3对象最初有3个值为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");
}

原创粉丝点击