deque 结合了vector的全部功能和list的首尾插入删除功能
/*********************/
/* demo deque */
/*********************/
#include<deque>
#include<iostream>
using namespace std;
//遍历打印
void printFun(deque<int> &obj)
{
for (deque<int>::iterator it = obj.begin(); it != obj.end(); it++)
{
cout << *it << " ";
}
cout << endl;
}
int main()
{
//构造的几种方法
deque<int> d1, d2(10, 1);
for (size_t i = 0; i < 10; i++)
{
d1.push_back(i);
}
deque<int> d3(d1.begin(), d1.begin() + 2);
cout << "d1:\t";
printFun(d1);
cout << "d2:\t";
printFun(d2);
cout << "d3:\t";
printFun(d3);
//通过头尾操作 front back
d1.front() = 10;
d1.back() = 12;
cout << "d1:\t";
printFun(d1);
//删除首尾
d1.pop_back();
d1.pop_front();
d1.push_back(9);
d1.push_front(0);
cout << "删除首尾\n";
cout << "d1:\t";
printFun(d1);
//区间删除
d1.erase(d1.begin(), d1.begin() + 3);
cout << "区间删除\n";
cout << "d1:\t";
printFun(d1);
//指定元素删除
for (deque<int>::iterator it = d1.begin(); it != d1.end();)
{
if (*it == 4)
{
it = d1.erase(it);//删除迭代器会把it也删除,但erase函数会返回下一个迭代器位置
}
else
{
it++;
}
}
cout << "指定元素删除\n";
cout << "d1:\t";
printFun(d1);
//根据值查找下标
deque<int>::iterator it = find(d1.begin(), d1.end(), 6);
cout << "根据值查找下标\n";
cout << distance(d1.begin(), it) << endl;
system("pause");
return 0;
}