deque则是一种双向开口的连续线性空间。所谓的双向开口,意思是可以在头尾两端分别做元素的插入和删除操作。
使用前需加头文件
#include
deque<typename> d; //typename表示队列中元素的类型
//例1:assign(beg, end)
deque<int> d;
int a[10] = { 1,2,3,4,5,6,7,8,9,10 };
d.assign(a,a+6);
//例2:assign(n, elem)
deque<int> d;
d.assign(3,6);
//例4:swap(deq)
deque<int> d1,d2;
d1.assign(3, 6);
d2.assign(4, 8);
d1.swap(d2)
结果:
例1:1 2 3 4 5 6
例2:6 6 6
例4:d1元素:8 8 8 8 ;d2元素:6 6 6
例1:
#include
using namespace std;
int main()
{
deque<int> d;
d.push_front(1);
d.push_back(2);
cout << "result1:" << d.at(0) << endl;
cout << "result2:" << d.operator[](0) << endl;
cout << "result3:" << d.front() << endl;
cout << "result4:" << d.back() << endl;
return 0;
}
运行结果:
result1:1
result2:1
result3:1
result4:2
例2:
#include
int main()
{
deque<int> d;
d.push_front(1);
d.push_back(2);
d.insert(d.begin(),6); //insert(pos,elem)
d.insert(d.begin(),3, 8); //insert(pos,n,elem)
int a[5] = { 1,2,3,4,5 };
d.insert(d.begin(),a ,a+2); //insert(pos,beg,end)
for (int i = 0; i < d.size(); i++)
{
cout << d[i] << endl;
}
return 0;
}
运行结果:
插入前:1 2
插入后:1 2 8 8 8 6 1 2
例3:
#include
int main()
{
deque<int> d,d2;
int a[10] = { 1,2,3,4,5,6,7,8,9,10 };
d.assign(a,a+6);
d.erase(d.begin(), d.begin()+3); //erase(beg,end)
for (int i = 0; i < d.size(); i++)
{
cout << d[i] << endl;
}
return 0;
}
运行结果:
删除前:1,2,3,4,5,6
删除后:4,5,6
队列中元素的访问有两种方法:一种通过迭代器进行访问,一种通过下标进行访问;
例4:
//过下标进行访问
for (int i = 0; i < d.size(); i++) //d为非空的队列
{
cout << d[i] << endl;
}
//通过迭代器进行访问
deque<int>::iterator it;
for (it = d.begin() ; it != d.end(); ++it)
{
cout << *it <<endl;
}