目录
1.包含头文件<deque>
#include<deque>
2.deque的创建与初始化
- deque<T> dq:创建一个空的 deque
- deque<T> dq (n):创建一个含有 n 个元素的 deque,元素为 T 的默认值
- deque<T> dq {a0, a1, ..., ai}:创建一个元素为 a0,a1,...,ai 的 deque
- deque<T> dq {begin, end}:用迭代器创建并初始化
deque相当于一个双端队列,可以在头部、尾部高效地插入元素
#include<iostream>
#include<array>
#include<deque>
using namespace std;
int main()
{
deque<int> dq;
deque<int> dq1 (7);
deque<int> dq2 {1, 2, 3};
array<int, 7> arr {1, 2, 3, 4, 5, 6, 7};
deque<int> dq3 {arr.begin(), arr.end()};
return 0;
}
3.deque访问元素
- [ ] 下标访问,无边界检查
- at 函数访问,有边界检查
#include<iostream>
#include<array>
#include<deque>
using namespace std;
int main()
{
array<int, 7> arr {1, 2, 3, 4, 5, 6, 7};
deque<int> dq3 {arr.begin(), arr.end()};
dq3.at(3) = 111;
dq3[4] = 222;
for (int i : dq3)
cout << i << endl;
return 0;
}
/*输出
1
2
3
111
222
6
7
*/
4.deque 大小及容量
- size():deque 当前的元素数目
- resize(n):当 n > size(),尾部增加 T 的默认值至 n 个元素;当 n < size(),自尾部删除至 n 个元素
- 没有 capacity()、reserve()
#include<iostream>
#include<deque>
using namespace std;
int main()
{
deque<int> dq {222, 333, 444}; // size = 3
dq.resize(2); // 222 333; size = 2
dq.resize(5); // 222 333 0 0 0; size = 5
return 0;
}
5.添加、删除及修改元素
- push_back():尾部增加元素
- push_front():头部增加元素
- pop_back():尾部删除元素
- pop_front():头部增加元素
- emplace_back():尾部增加元素,区别同 vector
- emplace_front():头部增加元素,区别同 vector
- emplace():插入元素,同 vector
- insert():插入元素,使用同 vector
- erase():删除 deque 元素,同 vector
- clear():清空 deque,同 vector
- assign():替换整个 deque
部分实例如下,与 vector 类似的实例参考:STL-vector_Fujh-nk的博客-CSDN博客
#include<iostream>
#include<deque>
using namespace std;
int main()
{
deque<int> dq {222, 333, 444};
dq.push_back(555); // 222 333 444 555
dq.push_front(111); // 111 222 333 444 555
dq.pop_back(); // 111 222 333 444
dq.pop_front(); // 222 333 444
// 替换整个 deque, 同 dq = {1, 2, 3, 4}, 也可以使用迭代器
dq.assign({1, 2, 3, 4}); // 1 2 3 4
// 用多个相同元素替换整个 deque
dq.assign(3, 7); // 7 7 7
return 0;
}
更多及参考网址:C++ vector插入元素(数据)详解