stack堆栈容器、queue队列容器和priority_queue优先队列容器(常用的方法对比与总结)
stack堆栈是一个后进先出的线性表,插入和删除元素都在表的一端进行。
stack堆栈的使用方法:
采用push()方法将元素入栈;
采用pop()方法将元素出栈;
采用top()方法访问栈顶元素;
采用empty()方法判断堆栈是否为空;
采用size()方法返回堆栈中有几个元素。
queue队列容器是一个先进先出的线性存储表,元素的出入只能在队尾,元素的删除只能在队首。
queue队列容器的使用方法:
入队时使用push()方法;
出队时使用pop()方法;
读取队首元素时front()方法;
读取队尾元素时back()方法;
判断是否为空时empty()方法;
获取队列当前的元素数目size()方法。
可以使用队列写一写广搜的题。
priority——queue优先队列容器和队列容器一样,只能从队尾插入元素,从队首删除元素。但是不同的是每一个进入队列的元素都会被安排在合适的地方,以至于出队的时候出队的元素总是最优的。故而名曰优先队列。
priority_queue优先队列的使用方法:
入队push(),出队pop(),读取队首元素时区分与队列容器的front()而是top(),另外还有判断队列是否为空的empty()和读取队列元素的数量size()等方法。
重定义比较规则的方法,第一种如果元素的类型是结构体,则直接在结构体中重载“<”操作符;对应的联系是HDU 1254 Rescue。
struct Node {
int s, t;//步数和时间
bool operator < (const Node &a) const {//返回值类型,函数名,参数列表,const限定符
return a.t < t;//按t从小到大排,反之为>即可
}
};
如果不是结构体可以重载"()"操作符。另外注意自定义优先级的比较函数时,注意在定义优先队列时声明在<>内,否则是不会按照你定义的优先级出队的。另外声明的时候也有一点区别,需要说明内部结构,不过一般将非结构体排序,用sort也行,能掌握更好。
struct qcmp {
bool operator () (const int &a, const int &b) {
return a > b;//按照从小到大排,反之<即可,和结构体中的相反
}
};
priority_queue<int, vector<int>, qcmp> pq;
stack堆栈容器、queue队列容器和priority_queue优先队列容器(常用的方法对比与总结)的更多相关文章
- 第20章 priority_queue优先队列容器
/* 第20章 priority_queue优先队列容器 20.1 priority_queue技术原理 20.2 priority_queue应用基础 20.3 本章小结 */ // 第20章 pr ...
- stack栈和Queue队列
1.push将对象插入 System.Collections.Generic.Stack<T> 的顶部. Stack st = new Stack(); //栈是先进后出 st.Push( ...
- Java数据类型Stack栈、Queue队列、数组队列和循环队列的比较
判断括号是否匹配:调用java本身 import java.util.Stack; public class Solution { public boolean isValid(String s){ ...
- STL容器(Stack, Queue, List, Vector, Deque, Priority_Queue, Map, Pair, Set, Multiset, Multimap)
一.Stack(栈) 这个没啥好说的,就是后进先出的一个容器. 基本操作有: stack<int>q; q.push(); //入栈 q.pop(); //出栈 q.top(); //返回 ...
- 第19章 queue队列容器
/* 第19章 queue队列容器 19.1 queue技术原理 19.2 queue应用基础 19.3 本章小结 */ // 第19章 queue队列容器 // 19.1 queue技术原理 // ...
- java集合类——Stack栈类与Queue队列
Stack继承Vector类,它通过五个操作对类 Vector 进行了扩展. 栈是 后进先出的. 栈提供了通常的 push 和 pop 操作,以及取堆栈顶点的 peek 方法.测试堆栈是否为空的 em ...
- Stack栈类与、Queue队列与线性表的区别和联系
栈和队列都属于特殊的线性表 一.定义 1.线性表(linear list): 是数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列.数据元素是一个抽象的符号,其具体含义在不同的情 ...
- C#部分---特殊集合:stack栈集合、queue队列集合、哈希表集合。
1.stack栈集合:又名 干草堆集合 栈集合 特点:(1)一个一个赋值 一个一个取值(2)先进后出实例化 初始化 Stack st = new Stack(); //添加元素用push st.Pus ...
- Stack集合 Queue队列集合 Hashtable哈希表
Stack集合 干草堆集合 栈集合 栈;stack,先进后出,一个一个赋值,一个一个取值,安装顺序来. 属性和方法 实例化 初始化 Stack st = new Stack(); 添加元素 个数 Co ...
随机推荐
- bootstrap1.1
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> < ...
- cocoaPods 最新系统上的安装和基本使用图文笔记
1>mac系统自带ruby环境,查看ruby版本信息:ruby -v 2>安装cocoapods:sudo gem install cocoapods 此方法在新版本系统上会报错,如图. ...
- 安卓读写INI文件 安卓读写INI文件
安卓读写INI文件 安卓读写INI文件 uses System.IoUtils procedure TForm1.Button1Click(Sender: TObject);varIniFile: ...
- python使用httplib2访问REST服务的例子
首先你需要安装httplib2,这个可以在github上找到: 然后你需要获得一个http连接的对象: con = httplib2.Http() 然后你需要发起连接: (6)resp, (5)c ...
- Windows远程桌面连接ubuntu 16
一.安装Xrdp Windows远程桌面使用的是RDP协议,所以ubuntu上就要先安装Xrdp,在ubuntu软件中心搜索xrdp安装. 安装xrdp的同时会自动安装vnc4server,xbase ...
- JMeter----正则表达式&JSON Path Extractor
最近在用JMerter给公司一个项目做性能测试,期间遇到要提取上一个接口返回的数据作为下个接口的请求.这里做下记录 如图所示,需要将“扫描二维码”接口请求的返回值中的data部分,作为“处理提交码值” ...
- ASP.NET写的一个博客系统
由于域名闲置,正好也有服务器空间,短期内开发了一个博客系统. 大家都来谈 http://www.djdlt.com 目前是开放注册,免费发布.(限于空间有限,图片还是尽量少传些) 网站架构: ASP ...
- KMP字符串匹配 简单理解
http://www.cnblogs.com/c-cloud/p/3224788.html 字符串匹配,长串长度为m,子串长度为n 则,暴力破解的复杂度为o(m*n) 如果用kmp匹配,则复杂度为o( ...
- Mac 下查看端口是否被占用
1. lsof -i :8080 2. netstat -anp tcp | grep 8080 3. nc -w 10 -n -z 127.0.0.1 8070-8090
- 编译lua-5.3.5时出错解决方法
问题描述: 执行 make linux test 过程出现错误,错误信息如下: “ lua.c:82:31: fatal error: readline/readline.h: No such fil ...