C++之路起航——标准模板库(queue)
queue:
FIFO队列:先进先出队列。
优先队列:对队列中的元素按优先级的大小输出。
定义:
FIFO队列: queue<数据类性>变量名。
优先队列:priority_queue<数据类型>变量名。
Eg:
FIFO队列: queue<int>que//定义了一个名为que的整型的先进先出队列。
优先队列:priority_queue<int>que//定义了一个名为que的整型的优先队列。
//当类型为自定义结构时,需要重载运算符。
Eg:
struct ss//定义了一个ss的结构体
{
int x,y;
ss(){}//构造函数
ss(int xx,int yy)//重载函数
{
x=xx;
y=yy;
}
bool operator<(const ss& b)const{//重载函数运算符。
return y<b.y;
}
};
priority_queue<ss>que;//定义使用;
注:调用操作函数时,类型也应为定义类型,例子因为重载了初始函数,所以可以用que.push(ss(1,2))来操作。
基本操作:
que.empty()//若队列不为空,则返回false,否则返回true;
que.szie()//返回队列中元素个数;
que.pop()//删除队首元素,但不返回其值;
que.front()//返回队首元素的值,但不删除该元素,(仅适用于FIFO队列)
que.back()//返回队尾元素的值,但不删除该元素,(仅适用于FIFO队列)
q.top()//返回具有最高优先级的元素的值,但不删除该元素(仅适用于优先队列)
q.push()//对queue; 在队尾压入一个新元素;对priority_queue, 在基于优先级的的当前位置插入新元素。
代码解释:
#include<cstdio>
#include<queue>
#include<iostream>
using namespace std;
struct ss
{
int x,y;
ss(){}
ss(int xx,int yy)
{
x=xx;
y=yy;
}
bool operator<(const ss& b)const{
return y<b.y;
}
};
int main()
{
priority_queue<ss>que1;
queue<int>que2;
que2.push(1);
que2.push(3);
que2.push(2);
cout<<"que2的长度";
cout<<que2.size()<<endl;
que1.push(ss(1,2));
que1.push(ss(2,3));
que1.push(ss(3,4));
cout<<"que1的长度";
cout<<que1.size();
cout<<"que2中的第一个元素";
cout<<que2.front()<<endl;
cout<<"删除que2中第一个元素"<<endl;
que2.pop();
cout<<"que2的长度";
cout<<que2.size()<<endl;
cout<<"que1的第一个元素的x与y值";
cout<<que1.top().x<<" "<<que1.top().y<<endl;
}
C++之路起航——标准模板库(queue)的更多相关文章
- C++之路起航——标准模板库(vector)
vector(动态数组或向量):动态分配内存空间的线性储存结构. 需要包括头文件<vector> 定义: vector<数据类型> 变量名: Eg: vector<int ...
- C++之路起航——标准模板库(deque)
deque(双端队列):http://baike.baidu.com/link?url=JTvA2cuLubptctHZwFxswvlZvxNdFOxmifsYCGLj5IZF-Tj4rbWLv8Jn ...
- C++之路起航——标准模板库(set)
set(集合):http://baike.baidu.com/link?url=cb68AB-3qfEK8RoaGHJFClb4ZiWpJfc32lPOLtaNUrdxntFC738zCZsCiUlf ...
- C++之路起航——标准模板库(list)
list(链表):http://baike.baidu.com/link?url=gkVdBlHEzy6ssrgT5Iy2wze4jl37ka1G45TRpUHrQSYFZQg2HimtUCePV0t ...
- [转载]C++之路起航——标准模板库(deque)
转自:https://www.cnblogs.com/grhyxzc/p/5074061.html deque(双端队列):http://baike.baidu.com/link?url=JTvA2c ...
- C++ 标准模板库STL 队列 queue 使用方法与应用介绍
C++ 标准模板库STL 队列 queue 使用方法与应用介绍 queue queue模板类的定义在<queue>头文件中. 与stack模板类很相似,queue模板类也需要两个模板参数, ...
- STL标准模板库(简介)
标准模板库(STL,Standard Template Library)是C++标准库的重要组成部分,包含了诸多在计算机科学领域里所常见的基本数据结构和基本算法,为广大C++程序员提供了一个可扩展的应 ...
- 【转】C++标准库和标准模板库
C++强大的功能来源于其丰富的类库及库函数资源.C++标准库的内容总共在50个标准头文件中定义.在C++开发中,要尽可能地利用标准库完成.这样做的直接好处包括:(1)成本:已经作为标准提供,何苦再花费 ...
- STL标准模板库介绍
1. STL介绍 标准模板库STL是当今每个从事C++编程的人需要掌握的技术,所有很有必要总结下 本文将介绍STL并探讨它的三个主要概念:容器.迭代器.算法. STL的最大特点就是: 数据结构和算法的 ...
随机推荐
- Delphi XE5 与其他版本共存
来源于http://www.board4allcz.eu 作者是gateway 如果你想使用Delphi诸如XE4.XE3.XE2.XE之类的版本跟Delphi XE5共存的话,在cglm.ini中简 ...
- BLE Device Monitor的使用
1 综述 BLE Device Monitor是一个用来显示任意蓝牙低功耗设备服务(services).特征(characteristics).属性(attributes)的windows程序.除了测 ...
- 应中DOS中断显示字符串(摘自《汇编语言》王爽)
data segment s1 db 'Good,better,best,$' s2 db 'Never let it rest,$' s3 db 'Till good is better,$' s4 ...
- MongoDB非正常关闭后修复记录
启动mongodb时出现如下错误: 根据提示可以知道错误原因是mongodb非正常关闭,此时需要对数据库进行修复.修复命令:mongod --repair 或 ./mongod --repair , ...
- [LeetCode] Search for a Range(二分法)
Given a sorted array of integers, find the starting and ending position of a given target value. You ...
- [LeetCode]题解(python):048-Rotate Image
题目来源 https://leetcode.com/problems/rotate-image/ You are given an n x n 2D matrix representing an im ...
- 在zendstudio中添加注释
/** * * * @access public * @param string $cat_id 分类查询字符串 * @return string */ 然后在function之前的一行打上/**然后 ...
- BetterZip,支持rar等多种压缩解压方式(Xcode自身不能解压rar)
百度云盘下载链接: http://pan.baidu.com/s/1sk7Faw9密码: muw7 rarosx-5.3.0.tar.gz1.解压之后放到/usr/local/目录下(位置可选,不过要 ...
- JS-002-修改元素属性(以按钮示例)
此文以修改 button 元素属性(例如:添加属性.修改属性.修改颜色样式.边框样式等)为简单示例,演示 js 修改 HTML 元素属性的基本方法,敬请参阅.若有不足之处敬请指正,不胜感激! 多不闲述 ...
- Linux 进程间通信
[转]unix进程间的通信方式 (1)管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信. (2)命名管道(named pipe):命名管道克服 ...