STL之queue队列 stack栈 priority_queue优先队列 deque双向队列
来源:互联网 发布:高清网络光端机 编辑:程序博客网 时间:2024/05/19 17:05
一、queue
先进先出
empty() 是否为空
size() 返回大小
front() 返回队头数据
back() 返回队尾数据
push() 队尾压入一个数据
pop() 抛弃队头数据
stack
后进先出
empty() 是否为空
size() 返回大小
top 返回栈顶数据
push() 栈顶压入一个数据
pop() 抛弃栈顶数据
二、priority_queue
一般方法:
empty() 是否为空
size() 返回大小
push() 队尾压入一个数据
pop() 抛弃队头数据
top() 返回队头数据(并不会抛弃,需手动pop)
优先队列可以实现自动排序。其模板声明如下:
priority_queue
int a[3] = {1,2,3};priority_queue<int> pq;for(i = 0; i < 3; i++) pq.push(a[i]);for(i = 0; i < 3; i++){ cout<<pq.top()<<" "; // 输出:3 2 1。默认大顶堆,元素大的优先级高 pq.pop();}
实现小顶堆:
priority_queue<int, vector<int>, greater<int> > pq;
struct Node{ int x, y; Node(int a, int b): x(a), y(b) {} friend bool operator<(Node left, Node right){ if( left.x == right.x ) return left.y> right.y; return left.x> right.x; }};priority_queue<Node> pq; // 只需定义一个struct就行了。
struct Node{ int x, y; Node(int a, int b): x(a), y(b) {} friend bool operator<(Node left, Node right){ if( left.x == right.x ) return left.y> right.y; return left.x> right.x; }};struct Cmp{ bool operator() (Node left, Node right){ if( left.x == right.x ) return left.y> right.y; return left.x> right.x; }};priority_queue<Node, vector<Node>, Cmp> pq; // 第三个参数自定义时需分开。
三、deque
deque second (4,100)
at []
front()
back()
push_back()
pop_back()
push_front()
pop_front()
insert()
erase()
empty()
size()
其他
函数特化同时使用front和top:
#include <iostream>#include <queue>template <typename Q> struct get_top;template <typename T> struct get_top <std::queue<T>>{ static void apply (std::queue<T> const& q) { std::cout << "std::queue" << std::endl; q.front(); }};template <typename T> struct get_top <std::priority_queue<T>>{ static void apply (std::priority_queue<T> const& q) { std::cout << "std::priority_queue" << std::endl; q.top(); }};template <typename Q>void t (Q const& q){ get_top<Q>::apply(q);}int main (){ std::queue<int> q0; t(q0); std::priority_queue<int> q1; t(q1); return 0;}
阅读全文
0 0
- STL之queue队列 stack栈 priority_queue优先队列 deque双向队列
- STL 之 stack&queue&priority_queue 栈,队列与优先队列
- STL之栈stack,队列queue以及优先队列
- STL:队列(queue)、优先级队列(priority_queue )及双向队列(deque)总结
- stack && queue && priority_queue 使用方法 (栈, 队列, 优先队列)
- STL之stack,queue,优先队列
- STL之stack,queue,优先队列
- STL 之 优先队列(priority_queue)
- STL之优先队列priority_queue
- 双向队列deque/栈stack
- STL之deque双向队列
- 【双端队列】【栈】【队列】STL之deque、stack、queue、容器适配器
- C++ STL入门教程(4)——stack(栈),queue(队列),priority_queue(优先队列)的使用(附完整程序代码)
- STL priority_queue 优先队列
- STL priority_queue 优先队列
- STL priority_queue 优先队列
- STL priority_queue优先队列
- stl-优先队列priority_queue
- Android N的Audio系统(一)
- python中的占位符
- 20170817
- PAT-剪刀石头布
- <C语言>使用一个二维数组实现学生姓名管理系统,要求不能使用链表
- STL之queue队列 stack栈 priority_queue优先队列 deque双向队列
- HDU 1543 Paint the Wall(离散化+暴力)
- 关于程序在vs中可以运行,而生成的exe运行不正常的问题
- HorizontalScrollView
- LVM中对基于xfs的文件系统进行扩容
- HDU-6140 Killer Names
- [Azure]ARM模式下删除虚拟机挂盘修复后恢复的脚本(托管磁盘)
- C++ rand()
- 计算机网络面试小结