std::deque 和 std::queue区别
时间: 2023-10-23 20:13:29 浏览: 231
`std::deque` 和 `std::queue` 是 C++ STL 中的两个不同的容器。
`std::deque` 是一个双端队列,也就是说它支持在队列的两端进行插入和删除操作。它的实现基于动态数组,因此可以在两端进行常量时间的插入和删除操作。它还支持随机访问,也就是说可以通过下标索引访问其中的元素。
`std::queue` 是一个队列,它是在 `std::deque` 的基础上实现的。它只支持在队列的一端进行插入和删除操作,即尾部插入,头部删除。因此,它不支持随机访问,也就是说不能通过下标索引访问其中的元素。
总结来说,`std::deque` 是一个灵活的双端队列,可以在队列的两端进行插入和删除操作,支持随机访问。而 `std::queue` 是一个只允许在队列尾部插入,队列头部删除的队列,没有随机访问的能力。
相关问题
std::deque和std::queue
std::deque是C++ STL的双端队列容器,支持在队列头尾进行插入和删除操作,可以当做栈、队列或双向队列使用。std::queue是基于std::deque实现的队列容器,支持在队列尾进行插入,在队列头进行删除操作。以下是std::deque和std::queue的例子:
1. 在std::deque的队尾插入元素、在队头插入元素、删除队头元素[^1]
```c++
std::deque<int> myDeque({ 1, 2, 3 });
myDeque.push_back(4); // 在队尾插入元素
myDeque.push_front(0); // 在队头插入元素
myDeque.pop_front(); // 删除队头元素
```
2. 使用std::queue在队尾插入元素、在队头删除元素
```c++
std::queue<int> myQueue({ 1, 2, 3 });
myQueue.emplace(4); // 在队尾插入元素
myQueue.push(5); // 在队尾插入元素
myQueue.pop(); // 删除队头元素
```
参考资料:
: C++ STL queue和deque容器用法详解。https://www.jianshu.com/p/102f7f8839b0
[^2]: C++ STL之queue和deque用法详解。https://blog.csdn.net/shrek11/article/details/86619842
std::deque头文件
`std::deque` 是 C++ 标准库中的一个容器,全称为双端队列(Double Ended Queue)。它是一个动态数组,支持在其两端进行插入和删除操作,效率相对较高。`#include <deque>` 这行代码的作用是在程序中引入这个容器的头部信息,使得开发者可以使用 `std::deque` 类型、成员函数以及相关的迭代器。
`deque` 提供了常数时间复杂度的 O(1) 插入和删除元素到两端的功能,内部实现通常是通过双向链表。常用的操作包括 push_back() (向后添加元素)、pop_front() (删除前端元素)、push_front() (添加前端元素) 和 pop_back() (删除后端元素) 等。
阅读全文