🔥 特点:deque
头插、头删速度比 vector
快
deque 是一个双向队列(double-ended queue),可以在队列的两端进行元素的插入和删除操作。
deque 涵盖了 queue(队列)、stack(堆栈)、vector(向量 )…
步骤零: 使用时需要包含头文件 #include<deque>
void printDeque(deque<int> &d) // 逐个元素打印
{
for (deque<int>::iterator i = d.begin(); i<d.end(); i++)
{
cout << *i << endl;
}
}
💜 deque 构造与赋值
// 1. 默认构造
deque<int> d1 = {0,1,2,3,4,5,6,7,8,9};
deque<int> d11;
d11 = d1; // 赋值 0 1 2 3 4 5 6 7 8 9
d11.assign(d1.begin(), d1.end()); // 赋值 0 1 2 3 4 5 6 7 8 9
d11.assign(10, 1); // 赋值 1 1 1 1 1 1 1 1 1 1
// 2. 通过区间构造
deque<int> d2(d1.begin(), d1.end());
// 3. n个element
deque<int> d3(10, 1);
// 4. 拷贝构造
deque<int> d4(d1);
💜 deque 插入和删除:push_back/front
、pop_back/front
、insert
、erase
、clear
deque<int> d1 = {0,1,2,3,4,5,6,7,8,9};
d1.push_back(10); // 0 1 2 3 4 5 6 7 8 9 10 - 尾插 10
d1.pop_back(); // 0 1 2 3 4 5 6 7 8 9 - 尾删 10
d1.push_front(-1); // -1 0 1 2 3 4 5 6 7 8 9 - 头插 -1
d1.pop_front(); // 0 1 2 3 4 5 6 7 8 9 - 头删 -1
d1.insert(d1.begin(), -1); // -1 0 1 2 3 4 5 6 7 8 9 - d1.begin() 处插入 -1
d1.erase(d1.begin()); // 0 1 2 3 4 5 6 7 8 9 - d1.begin() 处删除 -1
d1.clear(); // 清空
💜 deque 大小获取:empty
、 size
vector<int> v1 = {0,1,2,3,4,5,6,7,8,9};
cout << d1.empty() << endl; // 0
cout << d1.size() << endl; // 10
💜 deque 排序:sort
// 需要头文件 #include <algorithm>
deque<int> d1 = {0,1,3,2,4,8,5,6,7,9};
sort(d1.begin(), d1.end()); // 0 1 2 3 4 5 6 7 8 9