STL<queue>的使用
队列是一种基本的线性数据结构。它满足先进先出(First In ,First Out)的原则。
我们可以应用这种数据结构实现很多复杂的问题。但每次要手写队列的相关函数并不省事,我们便可以应用STL中的queue库来使用队列。
1调用头文件
#include<queue>
2.定义队列
queue<int>q;
3.基本操作
push(). ----向队列中添加新元素,填入的新元素进入队尾。
pop(). ----弹出队顶元素,不返回任何值。
(刘汝佳先生的算法竞赛入门经典中说,验证一个人是不是程序员只要问他push的反义词是啥...233)
front(). ----返回队顶元素的值
back(). ----返回队尾元素的值
empty(). ----验证队列是否为空,若空返回true
size(). ----返回队列大小
【以题带点】
洛谷P1996约瑟夫问题
传送门https://www.luogu.org/problemnew/show/P1996
题目描述
n个人(n<=100)围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报数,数到m的人再出圈,……依次类推,直到所有的人都出圈,请输出依次出圈人的编号.
输入输出格式
输入格式:
n m
输出格式:
出圈的编号
输入输出样例
10 3
3 6 9 2 7 1 8 5 10 4
说明
m,n≤100
【代码实现】
#include<iostream>
#include<cstdio>
#include<queue>
using namespace std;
int n,m,ex=1;
int main()
{
scanf("%d%d",&n,&m);
queue<int>q;
for(int i=1;i<=n;i++) q.push(i);//队列初始化
while(!q.empty())//在队列不为空时
{
if(ex==m)//ex记录数到第几个人,初始为1,数到时就弹出队顶元素
{
cout<<q.front()<<" ";//先输出完再弹出,并为ex重新赋值
q.pop();
ex=1;
}
else
{
ex++;
q.push(q.front());//两条开始并不很理解的语句,push的作用不是把队首元素转移到队尾,而是在队尾再添加一个元素
q.pop();//把刚才在队尾填的弹出
}
}
return 0;
}
STL<queue>的使用的更多相关文章
- STL Queue 容器
STL Queue 容器 Queue简介 queue是队列容器,是一种“先进先出”的容器. queue是简单地装饰deque容器而成为另外的一种容器. # ...
- 浅谈C++ STL queue 容器
浅谈C++ STL queue 容器 本篇随笔简单介绍一下\(C++STL\)中\(queue\)容器的使用方法和常见的使用技巧.\(queue\)容器是\(C++STL\)的一种比较基本的容器.我们 ...
- C++ STL - queue常见函数使用解析
C++ STL - queue常见函数使用解析 c++队列模板类的定义在头文件中,queue 模板类需要两个模板参数,一个是元素类型,一个容器类型,元素类型是必要的,容器类型是可选的,默认为deque ...
- STL queue 常见用法详解
<算法笔记>学习笔记 queue 常见用法详解 queue翻译为队列,在STL中主要则是实现了一个先进先出的容器. 1. queue 的定义 //要使用queue,应先添加头文件#incl ...
- C++标准模板库(STL)——queue常见用法详解
queue的定义 queue<typename> name; queue容器内元素的访问 由于队列本身就是一种先进先出的限制性数据结构,因此在STL中只能通过front()来访问队首元素, ...
- 2.6 C++STL queue详解
文章目录 2.6.1 引入 2.6.2 代码示例 2.6.3 代码运行结果 总结 2.6.1 引入 首先,在STL中 queue 和 stack 其实并不叫容器(container),而是叫适配器(a ...
- STL --> queue单向队列
queue单向队列 queue 模板类的定义在<queue>头文件中.与stack 模板类很相似,queue 模板类也需要两个模板参数,一个是元素类型,一个容器类型,元素类型是必要的,容器 ...
- STL - queue(队列)
Queue简介 queue是队列容器,是一种"先进先出"的容器. queue是简单地装饰deque容器而成为另外的一种容器. #include <queue> queu ...
- STL queue用法
先进先出 #include<iostream> #include<algorithm> #include<cstdio> #include<stack> ...
随机推荐
- [UnityShader3]溶解与重现效果
參考链接:http://www.cnblogs.com/Esfog/p/DissolveShader.html 效果图: 从颜色变化来说,有三种,一种是纹理颜色.一种是纹理与黑边的混合颜色,一种是透明 ...
- iOS之UI--涂鸦画板实例
iOS之UI--涂鸦画板实例 首先是搭建框架 其他的略过,直接展示效果: 然后接下来上传搭建好两个控制器框架的源码百度云下载链接: http://pan.baidu.com/s/1skjpDox ...
- Handler之IdleHandler
MessageQueue提供了另一类消息,IdleHandler 如果返回false,每次轮询都会调用(理论上应该可以做一些别的东西) Looper.myQueue().addIdleHandler( ...
- button在firefox 和 ie 下的问题
最近做了一个关于数据库管理的项目,因为不用考虑ie9以下的兼容性,所以一股脑的写完啦,到测试的时候发现了一个bug IE和火狐下有个模块关闭按钮的hover没有反应,ie不行就算了,火狐怎么也不行?我 ...
- Spring Boot 访问静态资源
方法1一: 在resources目录下建立static的目录,将静态资源放到此处,可以直接访问 访问:127.0.0.1:9010/img/123.png
- Vijos P1389婚礼上的小杉
背景 小杉的幻想来到了经典日剧<求婚大作战>的场景里……他正在婚礼上看幻灯片,一边看着可爱的新娘长泽雅美,一边想,如果能再来一次就好了(-.-干嘛幻想这么郁闷的场景……). 小杉身为新一代 ...
- Spring Boot2.0之整合Redis
需要的maven依赖 jar包,是对Jedis的封装 maven依赖: <project xmlns="http://maven.apache.org/POM/4.0.0" ...
- Javascript对象拷贝(clone)
Javascript对象拷贝(clone),希望大家给点建议1. [代码]方法代码 function cp(source, target) { function isBaseType(v) { ...
- uuid.js
// On creation of a UUID object, set it's initial valuefunction UUID(){ this.id = this.createUUID ...
- skynet实践(8)-接入websocket
我从开源项目(https://github.com/lipp/lua-websockets,这里我们简称LWS)中抽出了websocket的部分处理,步骤如下: 1)首先是解决LWS的几个依赖问题.L ...