赞
踩
C++中,queue(队列)是一种标准库容器,它遵循先进先出(FIFO)的原则,即最先进入队列的元素将最先被取出。queue是基于模板的数据结构,可以存储任意类型的元素。
deque(双端队列)与queue类似,但它允许在容器的两端进行有效的插入和删除操作。
在使用queue之前,需要包含<queue>头文件:
#include <queue>
使用std::queue 模板类创建queue对象,指定存储在队列中的元素类型:
std::queue<int> myQueue;
- push() : 将元素添加到队列的末尾。
- pop() : 删除队列头部的元素。
- front() : 访问队列头部的元素。
- back() : 访问队列尾部的元素。
- empty() : 检查队列是否为空。
- size() : 返回队列中元素的数量。
- emplace() : 在当前后元素上方的队列中插入新元素。
需要注意,push和emplace类似,但emplace实质上是传递构造函数的参数,直接在内存上构造对象,省去移动的过程。
- std::queue<int> myQueue;
-
- myQueue.push(10);
- myQueue.push(20);
- myQueue.push(30);
-
- while (!myQueue.empty()) {
- std::cout << myQueue.front() << " "; // 输出队列头部元素
- myQueue.pop(); // 删除队列头部元素
- }
- queue队列不提供迭代器访问元素,只能通过front和back访问队列头尾元素。
- queue队列不支持随机访问,只能在队列头部删除元素,队列尾部添加元素。
在C++中,deque(双端队列)是一种标准库容器,它允许在两端进行高效的插入和删除操作。
使用deque和queue一样,都需要包含<queue>头文件:
#include <queue>
使用std::deque模板类创建deque对象,指定存储在双端队列中的元素类型:
std::deque<int> myDeque;
- push_front() : 在双端队列的前端插入元素。
- push_back() : 在双端队列的后端插入元素。
- pop_front() : 删除双端队列的第一个元素。
- pop_back() : 删除双端队列的最后一个元素。
- front() : 访问双端队列的第一个元素。
- back() : 访问双端队列的最后一个元素。
- empty() : 检查双端队列是否为空。
- size() : 返回双端队列中元素的数量。
- std::deque<int> myDeque;
-
- myDeque.push_front(10);
- myDeque.push_back(20);
-
- while (!myDeque.empty()) {
- std::cout << myDeque.front() << " "; // 输出双端队列的第一个元素
- myDeque.pop_front(); // 删除双端队列的第一个元素
- }
- deque支持高效的在两端进行插入和删除操作,适合需要频繁在两端操作元素的场景。
- 与vector相比,deque在插入和删除操作方面更高效,但在随机访问方面性能略低。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。