1.初始化
deque<int> deq; //创建一个空的deque
deque<int> deq(deq1); //用一个已有的deque初始化当前deque
deque<int> deq(5); //创建一个deque,含有5个元素0
deque<int> deq(3, 5); //创建一个deque,含有3个5
deque<int> deq(arr, arr+5); //创建一个deque,以数组内的元素为初值
deque<int> deq(vec.begin(), vec.begin()+5);//创建一个deque,以vector中的元素为初值
deque<int> deq{1,2,3,4,5}; //用initializer_list初始化
2.常用操作
deq.at(4); //判断索引idx所标示的元素。如果idx越界,抛出out_of_range
deq[4]; //返回索引idx所标示的元素。不进行范围检查
deq.front(); //返回第一个元素。不检查元素是否存在
deq.back(); //返回最后一个元素。不检查元素是否存在
deq.push_back(5); //在尾部添加5
deq.push_front(5); //在头部插入一个5
deq.emplace(deq.begin()+2, 5); //在deq第三个位置插入5
deq.emplace_back(5); //在尾部添加5
deq.emplace_front(5); //在头部插入一个5
deq.pop_back(); //移除最后一个元素(无返回值)
deq.pop_front(); //移除头部元素(无返回值)
deq1 == deq2; //判断是否deq1等于deq2
deq.size(); //返回容器的实际元素个数
deq.empty(); //判断容器大小是否为零。等同于size()==0,但可能更快
deq.insert(deq.begin()+2, 5); //在第三个位置插入一个5,并返回新元素的位置
deq.insert(deq.begin(), 3, 5); //在开始位置插入3个5,并无返回值
deq.insert(deq.begin(), deq1.begin(), deq1.end()); //在开始位置插入在区间[begin,end)所有元素
deq.erase(deq.begin()); //移除第一个的元素,返回下一个元素位置
deq.erase(deq.begin(), deq.end()); //移除[begin, end)区间内的所有元素,返回下一个元素位置
deq.resize(10); //将元素个数改为10,多则删,少则添
deq.resize(10, 2); //将元素个数改为10,多则删,少则添2
deque<int>::iterator it = deq.begin();
deque<int>::const_iterator c_it = deq.cbegin();
deque<int>::reverse_iterator r_it = deq.rbegin();
deque<int>::const_reverse_iterator cr_it = deq.crbegin();
deq.clear(); //移除所有元素,将容器清空
3.不常用操作
deq.max_size(); //返回可容纳的最大元素数量
deq.assign(3, 5); //将n个elem副本赋值给deq
deq.assign(deq1.begin(), deq1.end()); //将区间[begin,end)中的元素赋值给deq
deq.assign(arr,arr+sizeof(arr)/sizeof(int));//用数组赋值
deque<deque<int>> matrix(3, deque<int>(5)); //二维deque
deq1.swap(deq2); //将deq1和deq2的元素互换
swap(deq1, deq2); //将deq1和deq2的元素互换
allocator<int> alloc = deq.get_allocator(); //获取内存分配器
deq.shrink_to_fit(); //释放未使用的内存
4.遍历
for(int i = 0; i < deq.size(); i++) cout << deq[i] << " ";
for(deque<int>::iterator it = deq.begin(); it != deq.end(); ++it) {
cout << *it << " ";
}
for(int& x : deq) cout << x << " ";
5.算法
find(deq.begin(), deq.end(), 5); //查找5,并返回迭代器位置,失败返回end()
sort(deq.begin(), deq.end()); //vector和deque没有成员函数,但是可以使用std函数来排序
ostream_iterator<int> output(cout, " ");copy(deq.begin(),deq.end(),output);//以空格分隔输出到屏幕