std::deque
(双端队列)是C++标准库中的一个容器,它支持在序列的两端进行快速插入和删除操作。以下是std::deque
的一些基础知识点:
包含头文件
使用deque
需要包含<deque>
头文件
#include <deque>
声明deque
可以声明一个deque
并指定它存储的元素类型。
deque<int> myDeque; // 声明一个存储int的deque
插入元素
- 使用
push_front()
在deque的开头插入元素。 - 使用
push_back()
在deque的末尾插入元素。 - 使用
insert()
在指定位置插入元素。myDeque.push_front(1); // 在开头插入1 myDeque.push_back(2); // 在末尾插入2 myDeque.insert(myDeque.begin() + 1, 3); // 在第2个位置插入3
删除元素
- 使用
pop_front()
删除deque开头的元素。 - 使用
pop_back()
删除deque末尾的元素。 - 使用
erase()
删除指定位置的元素或元素范围。myDeque.pop_front(); // 删除开头的元素 myDeque.pop_back(); // 删除末尾的元素 myDeque.erase(myDeque.begin() + 1); // 删除第2个元素
访问元素
- 使用
front()
访问deque开头的元素。 - 使用
back()
访问deque末尾的元素。 - 使用下标运算符
[]
或at()
(提供越界检查)访问指定位置的元素。int first = myDeque.front(); // 获取开头的元素 int last = myDeque.back(); // 获取末尾的元素 int second = myDeque[1]; // 获取第2个元素(注意索引从0开始) // 或者使用at(),如果索引越界会抛出std::out_of_range异常 int secondSafe = myDeque.at(1);
遍历deque
可以使用迭代器或范围for循环遍历deque。
for (deque<int>::iterator it = myDeque.begin(); it != myDeque.end(); ++it) {
// 遍历每个元素
cout << *it << ' ';
}
// 或者使用范围for循环
for (int val : myDeque) {
cout << val << ' ';
}
大小和容量
- 使用
size()
获取deque中元素的数量。 - 使用
empty()
检查deque是否为空。size_t numElements = myDeque.size(); // 获取元素数量 bool isEmpty = myDeque.empty(); // 检查是否为空
其它操作
- 使用
clear()
清空deque。 - 使用
resize()
改变deque的大小。 - 使用
assign()
替换deque的内容。
这些是std::deque
的一些基础知识点。它非常适合用于需要在序列的两端频繁插入和删除元素的应用场景。与std::vector
相比,std::deque
在两端插入和删除元素时通常具有更好的性能。