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> ...
随机推荐
- 【转载】轻松搞懂WebService工作原理
用更简单的方式给大家谈谈WebService,让你更快更容易理解,希望对初学者有所帮助. WebService是基于网络的.分布式的模块化组件. 我们直接来看WebService的一个简易工作流程: ...
- C++类使用static小例子(新手学习C++)
//为什么类的成员中不能包括动态分配的数据,若包含静态数据怎么使用?#include <iostream>using namespace std;class point{ priva ...
- js操作文件 HTML5版
js操作文件 HTML5版,有需要的朋友可以参考下. <!DOCTYPE html> <html> <head> <title>JSFileReader ...
- android keyEvent
http://developer.android.com/reference/android/view/KeyEvent.html
- 编程算法 - 数组中出现次数超过一半的数字 代码(C)
数组中出现次数超过一半的数字 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 数组中有一个数字出现的次数超过数组长度的一半, 请找出这个数字. ...
- ORA-01031: insufficient privileges 解决办法
sysdba不能远程登录这个也是一个很常见的问题了. 碰到这样的问题我们该如何解决呢? 我们用sysdba登录的时候,用来管理我们的数据库实例,特别是有时候,服务器不再本台机器,这个就更是有必要了. ...
- CH 5105 Cookies(贪心+DP)
\(CH 5105 Cookies\) \(solution:\) 真是好题一道!这道题我想了很久很久,就得这一题可以直接完全贪心,可惜最后还是失败了,但是对贪心的深入思考也换来了一个最优解方案.然后 ...
- hihocoder 1082 然而沼跃鱼早就看穿了一切 (替换指定的串 )
#1082 : 然而沼跃鱼早就看穿了一切 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 fjxmlhx每天都在被沼跃鱼刷屏,因此他急切的找到了你希望你写一个程序屏蔽所有句 ...
- DBA之RMAN备份
13:00 backup database backup db :3h 3h: 产生了10 archive log file 16:00 finish restore database; 13 ...
- iOS NSInteger/NSUInteger与int/unsigned int、long/unsigned long之间的区别!
在iOS开发中经常使用NSInteger和NSUInteger,而在其他的类似于C++的语言中,我们经常使用的是int.unsigned int.我们知道iOS也可以使用g++编译器,那么它们之间是否 ...