《算法笔记》学习笔记

queue 常见用法详解

queue翻译为队列,在STL中主要则是实现了一个先进先出的容器。

1. queue 的定义

//要使用queue,应先添加头文件#include <queue>,并在头文件下面加上"using namespace std;",即可使用。
//定义写法
queue< typename > name;
//typename 可以是任意基本数据类型或容器

2. queue容器内元素的访问

//由于队列(queue)本身就是一种先进先出的限制性数据结构,因此在STL中只能通过
//front()来访问队首元素,或是通过back()来访问队尾元素
#include <stdio.h>
#include <queue>
using namespace std;
int main() {
queue<int> q;
for(int i = 1; i <= 5; i++) {
q.push(i); //push(i)用以将i压入队列,因此依次入队 1 2 3 4 5
}
printf("%d %d\n", q.front(), q.back()); //输出结果是1 5
return 0;
}

3.queue实用函数实例解析

(1) push()

//push(x)将x进行入队,时间复杂度为O(1),实例见"queue"容器内元素的访问。

(2) front(), back()

//front()和back()可以分别获得队首元素和队尾元素,时间复杂度为O(1),实例见"queue"容器内元素的访问。
//使用front()前,必须用empty()判断队列是否为空

(3) pop()

//pop()令队首元素出队,时间复杂度为O(1)
//使用pop()前,必须用empty()判断队列是否为空
#include <stdio.h>
#include <queue>
using namespace std;
int main() {
queue<int> q;
for(int i = 1; i <= 5; i++) {
q.push(i); //依次入队1 2 3 4 5
}
for(int i = 1; i <= 3; i++) {
q.pop(); //出队首元素三次(即依次出队1 2 3)
}
printf("%d\n", q.front()));
return 0;
}

(4) empty()

//empty()检测queue是否为空,返回true则空,返回false则非空。时间复杂度为O(1)
#include <stdio.h>
#include <queue>
using namespace std;
int main() {
queue<int> q;
if(q.empty() == true) { //一开始队列内没有元素,所以是空
printf("Empty\n");
} else {
printf("Not Empty\n");
}
q.push(1);
if(q.empty() == true) { //在入队"1"后,队列非空
printf("Empty\n");
} else {
printf("Not Empty\n");
}
return 0;
}

(5) size()

//size()返回queue内元素的个数,时间复杂度为O(1)
#include <stdio.h>
#include <queue>
using namespace std;
int main() {
queue<int> q;
for(int i = 1; i <= 5; i++) {
q.push(i); //push(i)用以将i压入队列
}
printf("%d\n", q.size()); //队列中有5个元素
return 0;
}

4. queue的常见用途

  • 需要实现广度优先搜索时,可以不用自己手动实现一个队列,而是用queue作为替代。

STL queue 常见用法详解的更多相关文章

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

    queue的定义 queue<typename> name; queue容器内元素的访问 由于队列本身就是一种先进先出的限制性数据结构,因此在STL中只能通过front()来访问队首元素, ...

  2. STL priority_queue 常见用法详解

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

  3. STL stack 常见用法详解

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

  4. STL map 常见用法详解

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

  5. STL set 常见用法详解

    <算法笔记>学习笔记 set 常见用法详解 set是一个内部自动有序且不含重复元素的容器 1. set 的定义 //单独定义一个set set<typename> name: ...

  6. STL vector常见用法详解

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

  7. STL pair 常见用法详解

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

  8. STL string 常见用法详解

    string 常见用法详解 1. string 的定义 //定义string的方式跟基本数据类型相同,只需要在string后跟上变量名即可 string str; //如果要初始化,可以直接给stri ...

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

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

随机推荐

  1. LVS集群之DR模式

    今天来讲LVS-DR模式集群实现负载均衡的搭建方法 环境 主机名 IP   系统 角色 dir DIP:192.168.199.9 VIP:192.168.199.8 rhel7.4 集群服务器 no ...

  2. vue 复制内容到粘贴板

    首先是npm安装依赖包:npm install clipboard --save 导入组件:import Clipboard from "clipboard"; html如图: c ...

  3. docker-compose部署微服务

    1.安装docker-compose curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose ...

  4. CISCO实验记录四:备份路由器的IOS

    1.配置好TFTP服务器(假设ip为192.168.2.1) 2.查看当前IOS名称 #show version 输出中有一段:System image file is "bootflash ...

  5. 20191121-5 Scrum立会报告+燃尽图 01

    此作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/10065 一.小组情况 组长:贺敬文组员:彭思雨 王志文 位军营 徐丽君队名 ...

  6. GDB之常见错误

    1. dl-debug.c:74: No such file or directory. 如上图,当使用 gdb 调试执行 r 时,会出现如上打印. 解决方法如下: apt-get install e ...

  7. Redis调试 Centos

    https://zhuanlan.zhihu.com/p/67205845 https://www.cxc233.com/blog/e1d54234.html

  8. linux下如何进入chroot环境?

    1. 假设要chroot的根目录为/mnt 2. 创建必要的目录 mkdir /mnt/{dev,proc,sys,run} 3. 挂载和构建/dev mount -v --bind /dev /mn ...

  9. mybatis配置文件祥解(mybatis.xml)

    以下是mybatis.xml文件,提倡放在src目录下,文件名任意 <?xml version="1.0" encoding="UTF-8"?> & ...

  10. [Ubuntu]18安装navicat 破解版&官方版本

    破解版本: 一.下载破解版的navicat  链接:https://pan.baidu.com/s/1ulptSderoG0EbEQpO3Adww提取码:8oc3 二.解压到桌面 在下载压缩文件之后, ...