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,但在任何情况下,它们都允许通过随机访问迭代器直接访问各个元素,并通过根据需要扩展和收缩容器来自动处理存储。
应用举例
#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;
}