C++标准模板库(STL)——queue常见用法详解
- 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常见用法详解的更多相关文章
- C++标准模板库(STL)——set常见用法详解
set的定义 set<typename> name; typename可以是任何基本类型,如int.double.char.结构体等,也可以是STL标准容器,如vector.set.que ...
- C++标准模板库(STL)——vector常见用法详解
vector的定义 vector<typename> name; 相当于定义了一个一维数组name[SIZE],只不过其长度可以根据需要进行变化,比较节省空间,通俗来讲,vector就是& ...
- C++标准模板库(STL)——map常见用法详解
map的定义 map<typename1, typename2> mp; map需要确定映射前类型和映射后类型,所以需要在<>内填写两个类型,第一个是键的类型,第二个是值的类型 ...
- STL queue 常见用法详解
<算法笔记>学习笔记 queue 常见用法详解 queue翻译为队列,在STL中主要则是实现了一个先进先出的容器. 1. queue 的定义 //要使用queue,应先添加头文件#incl ...
- STL priority_queue 常见用法详解
<算法笔记>学习笔记 priority_queue 常见用法详解 //priority_queue又称优先队列,其底层时用堆来实现的. //在优先队列中,队首元素一定是当前队列中优先级最高 ...
- STL vector常见用法详解
<算法笔记>中摘取 vector常见用法详解 1. vector的定义 vector<typename> name; //typename可以是任何基本类型,例如int, do ...
- STL pair 常见用法详解
<算法笔记>学习笔记 pair 常见用法详解 //pair是一个很实用的"小玩意",当想要将两个元素绑在一起作为一个合成元素, //又不想因此定义结构体时,使用pair ...
- STL stack 常见用法详解
<算法笔记>学习笔记 stack 常见用法详解 stack翻译为栈,是STL中实现的一个后进先出的容器.' 1.stack的定义 //要使用stack,应先添加头文件#include &l ...
- STL map 常见用法详解
<算法笔记>学习笔记 map 常见用法详解 map翻译为映射,也是常用的STL容器 map可以将任何基本类型(包括STL容器)映射到任何基本类型(包括STL容器) 1. map 的定义 / ...
随机推荐
- 文档翻译第002篇:Process Monitor帮助文档(Part 2)
[筛选与高亮显示] Process Monitor提供了一些方式来配置筛选器和高亮显示. 筛选器的包含与排除 您可以在筛选器中指定事件的属性,这样就可以令Process Monitor ...
- hdu1247 字典树或者hash
题意: 给你一些串,问你哪些串是由其他两个串连接成的. 思路: 我用了两种方法,一个是hash,hash的时候用map实现的,第二种方法是字典树,字典树我们枚举每个一字符串,查 ...
- Python中数据的排序
目录 列表的排序 sort(key,reverse)方法 sorted(target,key,reverse) 函数 元组tuple的排序 sort(key,reverse)方法 sorted(tar ...
- nodejs-安装/helloworld/npm
安装---------------------------------------------------------------- http://nodejs.cn/download/ 完成之后确定 ...
- 神经网络与机器学习 笔记—Rosenblatt感知器收敛算法C++实现
Rosenblatt感知器收敛算法C++实现 算法概述 自己用C++实现了下,测试的例子和模式用的都是双月分类模型,关于双月分类相关看之前的那个笔记: https://blog.csdn.net/u0 ...
- Portswigger web security academy:Server-side template injection(SSTI)
Portswigger web security academy:Server-side template injection(SSTI) 目录 Portswigger web security ac ...
- 段间跳转之TSS段
TR寄存器,TSS描述符,TSS段 TR寄存器与普通的段寄存器一样都有可见部分和不可见部分.TR的可见部分为16位为其段选择子,不可见部分是32位的TSS基地址和16位的大小. TSS描述符存在GDT ...
- 向Vertex Shader传递vertex attribute
在VBO.VAO和EBO那一节,介绍了如何向Vertex Shader传递vertex attribute的基本方法.现在我准备把这个话题再次扩展开. 传递整型数据 之前我们的顶点属性数据都是floa ...
- Django(27)类视图
类视图 在写视图的时候,Django除了使用函数作为视图,也可以使用类作为视图.使用类视图可以使用类的一些特性,比如继承等. View django.views.generic.base.View是主 ...
- 一文学完makefile语法
一.开始 1.Hello World 新建一个makefile文件,写入如下内容, hello: echo "Hello World" clean: echo "clea ...