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 的定义 / ...
随机推荐
- LA3971组装电脑
题意: 你有b块钱,想要组装一台电脑,给你提供一些零件,每种零件提供一个或几个,组装电脑的前提是每种零件只能也必须选择一个,每种零件都有自己的种类,名字,价格,还有品质,要求是在能配成电脑 ...
- 在 GitHub 学习,成长为自己想要的样子|HelloGitHub 访谈
万事开头难,我们经过长期的策划和筹备,终于推出了 HelloGitHub 采访系列「开源项目作者的访谈」.这是一个采访个人开源项目作者的栏目,内容侧重于开源项目作者与开源的故事. 我们深知想要做好一个 ...
- 迪杰斯特拉(Dijkstra) 最短路算法
直接看B站视频吧: https://www.bilibili.com/video/BV1QK411V7V4/
- canvas绘制折线路径动画
最近有读者加我微信咨询这个问题: 其中的效果是一个折线路径动画效果,如下图所示: 要实现以上路径动画,一般可以使用svg的动画功能.或者使用canvas绘制,结合路径数学计算来实现. 如果用canva ...
- 【python】Leetcode每日一题-不同的子序列
[python]Leetcode每日一题-不同的子序列 [题目描述] 给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数. 字符串的一个 子序列 是指,通过删除一些(也可以 ...
- Mongodb安装配置以及在thinkphp中的使用
1.Mongodb安装 Mongodb安装参照此文档: https://www.runoob.com/mongodb/mongodb-window-install.html php的mongodb扩展 ...
- Redis6.x学习笔记(一)
前言 最近学习Redis6.x,特做笔记以备忘,与大家共学.课程是从私塾在线下载的,他们把架构师课程都放出来了,大家可以去下载学习,不要钱的,地址是http://t.hk.uy/eac,课程很不错,值 ...
- FHD 4K 8K分辨率
4K(2160P,即4096×2160的像素分辨率)和8K(4320P,即7,680 × 4,320的像素分辨率)属于UHDTV. FHD是FULL HD(Full High Definition)的 ...
- Java匿名对象导致的内存泄漏
这几天与在某群与群友讨论了Runnable匿名对象导致内存泄漏的相关问题,特此记录一下. 示例代码如下: package com.memleak.memleakdemo; public class L ...
- 使用 CSS perfer-* 规范,提升网站的可访问性与健壮性
文本将介绍 CSS 媒体查询中新增的几个特性功能: prefers-reduced-motion prefers-color-scheme prefers-contrast prefers-reduc ...