vector是单向开头的连续线性空间,而deque是双向开口的连续线性空间。
支持随机访问(就如d[2]这样)和快速插入和删除。其余的类似vector操作方法的使用.
void bianli(deque<int>& dq)
{
//遍历-1 deque可以随机读取
for (int i = 0; i < dq.size(); i++)
cout<<dq[i]<<" ";
cout<<endl;
//遍历-2 迭代器遍历
for (auto it = dq.begin(); it != dq.end(); it++)
cout<<*it<<" ";
cout<<endl;
//遍历-3 c++11 新特性
for (auto it : dq)
cout<<it<<" ";
cout<<endl;
//反向遍历
for(auto it = dq.rbegin(); it != dq.rend(); it++)
cout << *it << " ";
cout << endl;
}
void deque_test()
{
//创建
deque<int> dq;
deque<int> dq2;
//插入
dq.insert(dq.begin(), 22);
dq.insert(dq.begin() + 1, 2, 44);
for (int i = 0; i < 10; i++)
dq2.push_back(i); //deque可以前后插入
for (int i = 10; i < 20; i++)
dq.push_front(i);
dq.assign(4, 5); //赋4个值为5的元素到deque容器中,这个容器会清除掉deque容器中以前的内容
dq.assign(dq2.begin() + 1, dq2.end() - 2); //把一个deque容器中的一截复制到dq中,会清除掉deque容器中以前的内容
//获取
cout<<dq[3]<<endl; //可以随机存取
cout<<dq.front()<<endl;
cout<<dq.back()<<endl;
//删除
dq.pop_back();
dq.pop_front();
dq.erase(dq.begin() + 1);
dq.erase(dq.begin(), dq.end() - 3);
//其他
dq.empty(); //是否为空
dq.size();
dq.clear();
dq.max_size(); //返回c容器可能存放元素的最大数量 和内部数据结构有关
dq.resize(2); //截取前两个
}