C++标准库中的deque是一个双端队列(double-ended queue),它支持在队列的前端和后端进行插入和删除操作。deque在内部使用了动态数组来实现,因此具有高效的随机访问性能。
deque基本操作
deque
是C++标准库中的双端队列(double-ended queue),它支持在队列的前端和后端进行插入和删除操作。以下是一些基本的deque操作函数:
push_front()
: 在队列前端插入一个元素。push_back()
: 在队列后端插入一个元素。pop_front()
: 删除队列前端的一个元素。pop_back()
: 删除队列后端的一个元素。front()
: 返回队列前端元素。back()
: 返回队列后端元素。empty()
: 检查deque是否为空。size()
: 返回deque中元素的数量。clear()
: 删除deque中的所有元素。insert(iterator position, const value_type& val)
: 在迭代器position
指定的位置之前插入值val
。erase(iterator position)
: 删除位于position
的元素。erase(iterator first, iterator last)
: 删除位于范围[first, last)
内的元素。swap(deque<T>& x)
: 与另一个deque交换内容。rbegin()
: 返回指向deque后端的随机访问迭代器。rend()
: 返回指向deque前端反向的随机访问迭代器。begin()
: 返回指向deque前端的随机访问迭代器。end()
: 返回指向deque后端反向的随机访问迭代器。
deque特性
- 具有动态大小:deque是一个动态数组,可以根据需要自动扩展或收缩容器。
- 两端可扩展:deque可以在前端或后端(或同时两端)进行插入和删除操作。
- 随机访问迭代器:deque允许通过随机访问迭代器直接访问各个元素。
请注意,不同的库可能以不同的方式实现deques,但在任何情况下,它们都允许通过随机访问迭代器直接访问各个元素,并通过根据需要扩展和收缩容器来自动处理存储。
应用举例
c++
#include <iostream>
#include <deque>
int main() {
std::deque<int> d;
// 在队列后端插入元素
d.push_back(1);
d.push_back(2);
d.push_back(3);
// 在队列前端插入元素
d.push_front(0);
d.push_front(4);
// 删除队列前端元素
d.pop_front();
// 删除队列后端元素
d.pop_back();
// 遍历队列中的元素并输出
for (int i : d) {
std::cout << i << " ";
}
return 0;
}