c++ STL之queue
1.介绍
队列是一种数据结构,特点是先进先出。
头文件
#include<queue>
当然也可以使用c++的万能头文件
#include<bits/stdc++.h>
queue的声明
queue<int> que//定义了一个储存int类型的队列
queue<char> que//储存char类型
queue<node> que//储存结构体类型的队列,要先定义一个node的结构体
2.函数
代码 | 解释 |
---|---|
que.front() | 返回队首元素 |
que.back() | 返回队尾元素 |
que.push(val) | 添加一个元素入队 |
que.empty() | 判断队列是否为空,为空则返回ture |
que.size() | 返回队列中元素的个数 |
que.pop() | 删除队首元素,即出队 |
3.队列的遍历操作
queue<int> que;
for(int i=0;i<5;i++){
que.push(i);
}
for(int i=0;i<5;i++){
que.push(que.front());
que.pop();
}
4.利用queue解题
以信息学奥赛一本通的围圈报数(约瑟夫)为例(此处引用了君义的代码):
[地址](信息学奥赛一本通(C++版)在线评测系统 (ssoier.cn))
#include <bits/stdc++.h>
using namespace std;
int main()
{
queue<int> que;
int n, m;
cin >> n >> m;
for(int i = 1; i <= n; ++i)
que.push(i);
for(int i = 1; i <= n; ++i)
{
for(int j = 1; j <= m - 1; ++j)
{//将队头的人出队后,再入队到队尾
que.push(que.front());
que.pop();
}
cout << que.front() << ' ';//此时队头是要出列的人
que.pop();
}
return 0;
}
以上是queue的一些常见用法,还有一些具体的解释不是很到位,以其其他函数我没有枚举,可以看其他博客继续学习,欢迎批评与指正!