c++ queue
时间: 2023-11-03 10:57:00 浏览: 72
queue是一种容器转换器模板,通过调用#include<queue>即可使用队列类。在进行queue的初始化时,必须指定数据类型,而容器可以省略,省略时默认为deque类型。例如,可以使用以下方式进行queue的初始化:
queue<int>q1;
queue<double>q2;
queue<char>q3;(默认使用deque容器实现的queue)
queue<char, list<char>>q1;(使用list容器实现的queue)
queue<int, deque<int>>q2;(使用deque容器实现的queue)
需要注意的是,不能使用vector容器来初始化queue。
另外,可以使用size()函数来返回队列中元素的个数。例如,在一个queue<string>对象q中,通过q.push("first")和q.push("second")向队列中添加元素,然后使用cout<<q.size()<<endl;来输出队列中元素的个数。
相关问题
c++queue
C++ STL 中的 queue 是一种先进先出(First In First Out,FIFO)的容器,它支持在队列尾部添加元素,在队列头部删除元素。
在使用 queue 之前,需要包含头文件 `<queue>`。queue 的定义方式如下:
```cpp
template <class T, class Container = deque<T>> class queue;
```
其中,`T` 表示队列元素的类型,`Container` 表示底层容器类型,默认为 `deque<T>`。
queue 支持以下常用操作:
- `push(elem)`:在队列尾部添加元素 `elem`。
- `pop()`:删除队列头部元素。
- `front()`:返回队列头部元素。
- `back()`:返回队列尾部元素。
- `empty()`:判断队列是否为空。
- `size()`:返回队列中元素的个数。
下面是一个使用 queue 的例子:
```cpp
#include <iostream>
#include <queue>
using namespace std;
int main() {
queue<int> q;
q.push(1);
q.push(2);
q.push(3);
cout << "front: " << q.front() << endl;
cout << "back: " << q.back() << endl;
while (!q.empty()) {
cout << q.front() << " ";
q.pop();
}
return 0;
}
```
输出结果为:
```
front: 1
back: 3
1 2 3
```
C++ queue遍历
C++ STL的queue队列本身提供了遍历的方法。可以通过获取队列的大小,然后使用循环来遍历队列的元素。在每一次循环中,可以通过使用front()方法获取队列的第一个元素,并将其输出。然后再通过push()方法将这个元素放回队列末尾,并通过pop()方法将其从队列中移除。这样就可以实现队列的遍历。 [2]
但是需要注意的是,循环中的myqueue_size必须是一个固定值,而不是根据队列大小的实时变化来确定循环次数。否则在循环过程中队列的大小会发生改变,导致无法正确遍历队列。所以需要在遍历前将队列的大小保存为一个固定值,然后在循环中使用这个固定值来确定循环次数。 [2]
另外,也有人认为queue不可以直接遍历,因为queue是先进先出的数据类型。但如果一定要遍历,可以通过不断读取队首元素并将其移除,然后再将其放回队列末尾来实现。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [c++ 如何遍历队列Queue](https://blog.csdn.net/Code_star_one/article/details/104699535)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [C++ queue队列如何遍历](https://blog.csdn.net/u013288190/article/details/120180005)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)