• queue的定义
queue<typename> name; 
  • queue容器内元素的访问

  由于队列本身就是一种先进先出的限制性数据结构,因此在STL中只能通过front()来访问队首元素,或是通过back()来访问队尾元素。

示例:

 1 #include <iostream>
2 #include <queue>
3 using namespace std;
4 queue<int> q;
5 int main()
6 {
7 for(int i=0;i<5;i++){
8 q.push(i+1); //push将i+1压入队列
9 }
10 cout<<q.front()<<" "<<q.back();
11 return 0;
12 }
输出结果:
1 5
  • queue常用函数

  (1)push()

  push(x)将x进入队列,时间复杂度为O(1)。

  (2)front()、back()

  front()和back()可以分别获得队首元素和队尾元素,时间复杂度为O(1)。

  (3)pop()

  pop()令队首元素出队,时间复杂度为O(1)。

示例:

 1 #include <iostream>
2 #include <queue>
3 using namespace std;
4 queue<int> q;
5 int main()
6 {
7 for(int i=0;i<5;i++){
8 q.push(i+1); //push将i+1压入队列
9 }
10 for(int i=0;i<2;i++){
11 q.pop(); //出队2次(1,2出队)
12 }
13 cout<<q.front();
14 return 0;
15 }
输出结果:
3

  (4)empty()

  empty()检测queue是否为空,返回true为空,返回false为非空。时间复杂度为O(1)。

示例:

 1 #include <iostream>
2 #include <queue>
3 using namespace std;
4 queue<int> q;
5 int main()
6 {
7 if(q.empty()==true){ //初始时,队列为空
8 cout<<"empty"<<endl;
9 }
10 else{
11 cout<<"not empty"<<endl;
12 }
13 q.push(1); //在入队1后,队列非空
14 if(q.empty()==true){
15 cout<<"empty"<<endl;
16 }
17 else{
18 cout<<"not empty"<<endl;
19 }
20 return 0;
21 }
输出结果:
empty
not empty

  (5)size()

  size()返回queue内元素的个数,时间复杂度为O(1)。

示例:

 1 #include <iostream>
2 #include <queue>
3 using namespace std;
4 queue<int> q;
5 int main()
6 {
7 for(int i=0;i<5;i++){
8 q.push(i+1); //push将i+1压入队列
9 }
10 cout<<q.size();
11 return 0;
12 }
输出结果:
5

C++标准模板库(STL)——queue常见用法详解的更多相关文章

  1. C++标准模板库(STL)——set常见用法详解

    set的定义 set<typename> name; typename可以是任何基本类型,如int.double.char.结构体等,也可以是STL标准容器,如vector.set.que ...

  2. C++标准模板库(STL)——vector常见用法详解

    vector的定义 vector<typename> name; 相当于定义了一个一维数组name[SIZE],只不过其长度可以根据需要进行变化,比较节省空间,通俗来讲,vector就是& ...

  3. C++标准模板库(STL)——map常见用法详解

    map的定义 map<typename1, typename2> mp; map需要确定映射前类型和映射后类型,所以需要在<>内填写两个类型,第一个是键的类型,第二个是值的类型 ...

  4. STL queue 常见用法详解

    <算法笔记>学习笔记 queue 常见用法详解 queue翻译为队列,在STL中主要则是实现了一个先进先出的容器. 1. queue 的定义 //要使用queue,应先添加头文件#incl ...

  5. STL priority_queue 常见用法详解

    <算法笔记>学习笔记 priority_queue 常见用法详解 //priority_queue又称优先队列,其底层时用堆来实现的. //在优先队列中,队首元素一定是当前队列中优先级最高 ...

  6. STL vector常见用法详解

    <算法笔记>中摘取 vector常见用法详解 1. vector的定义 vector<typename> name; //typename可以是任何基本类型,例如int, do ...

  7. STL pair 常见用法详解

    <算法笔记>学习笔记 pair 常见用法详解 //pair是一个很实用的"小玩意",当想要将两个元素绑在一起作为一个合成元素, //又不想因此定义结构体时,使用pair ...

  8. STL stack 常见用法详解

    <算法笔记>学习笔记 stack 常见用法详解 stack翻译为栈,是STL中实现的一个后进先出的容器.' 1.stack的定义 //要使用stack,应先添加头文件#include &l ...

  9. STL map 常见用法详解

    <算法笔记>学习笔记 map 常见用法详解 map翻译为映射,也是常用的STL容器 map可以将任何基本类型(包括STL容器)映射到任何基本类型(包括STL容器) 1. map 的定义 / ...

随机推荐

  1. hdu5253最小生成树

    题意:(中文题,直接粘过来吧)                                                                              连接的管道   ...

  2. poj1509最小表示法

    题意:       给你一个循环串,然后找到一个位置,使得从这个位置开始的整个串字典序最小. 思路:       最小表示法的建档应用,最小表示法很好理解,就点贪心的意思,一开始我们枚举两个起点i,j ...

  3. Win64 驱动内核编程-14.回调监控文件

    回调监控文件 使用 ObRegisterCallbacks 实现保护进程,其实稍微 PATCH 下内核,这个函数还能实现文件操作监视.但可惜只能在 WIN7X64 上用.因为在 WIN7X64 上 P ...

  4. 【hugo】- hugo 博客 添加鼠标单击特效

    hugo 博客 监听鼠标点击事件,添加动画效果 js下载 链接:https://pan.baidu.com/s/1SZu76WdEXRxLCfqJ2lbbtQ 密码:r056 移入hugo博客中 打开 ...

  5. opencv——图像遍历以及像素操作

    摘要 我们在图像处理时经常会用到遍历图像像素点的方式,在OpenCV中一般有四种图像遍历的方式,在这里我们通过像素变换的点操作来实现对图像亮度和对比度的调整. 补充: 图像变换可以看成 像素变换--点 ...

  6. Day015 Error和Exception

    Error和Exception 什么是异常 实际工作中,遇到的情况不可能是非常完美的.比如:你写的某个模块,用户输入不一定符合你的要求.你的程序要打开某个文件,这个文件可能不存在或者文件的格式不对,你 ...

  7. OpenCV on Mac OSX: A step-by-step guide

    I'm using OpenCV for my 4th year design project and setting it up was a huge pain. I had to look thr ...

  8. 通过CRM系统实现工作流程自动化

    灵活运用CRM系统所拥有的自动化功能模块,是公司在快速发展和降低成本的关键保障.不管您的公司规模的大小,您企业的工作流程都必须遵照相同的流程反复操作.这种反复的工作是一个效率黑洞,长久以往会导致人力资 ...

  9. 25.数据结构,LinkedList ,泛型,类型通配符

    3.数据结构 数据结构是计算机存储,组织数据的方式.是指相互之间存在的一种或多种特定关系的数据元素的集合 通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率 ---------常见的数据结构 ...

  10. FastDFS依赖无法导入

    FastDFS依赖无法导入 fastdfs-client-java 导入爆红 <!-- FastDFS--> <dependency> <groupId>org.c ...