STL中优先级队列的使用priority_queue
2013-08-14 14:38
666 查看
首先,#include<queue>,#include<vector>
一、对于基本类型:然后,如果是要大的数优先级高,那么这样声明:priority_queue<int, vector<int>, less<int> > PQ;如果是要小的数优先级高,那么这样: priority_queue<int, vector<int>, greater<int> > PQ;
其中的vector用list好像会出错,具体原因再去了解
插入用push(1);取出用top();弹出用pop();
二、对于结构:方法一:如果不是基本类型,那么要重载括号运算符,声明还是一样的 priority_queue<Node, vector<Node>, greater<Node> > PQ; 在Node结构里面添加如下函数:bool operator < (const Node& other) const { return this->elem < other.elem; }//没有这个函数,less<Node>则会报错 bool operator > (const Node& other) const { return this->elem > other.elem; }//没有这个函数,greater<Node>则会报错
方法二:不用less<Node>和greater<Node>的形式,而是自己来定义,声明的时候这样写: priority_queue<Node, vector<Node>, cmp > PQ;
在外面重新写一个结构,如下:struct cmp{ bool operator() (const Node& node1, const Node& node2){ return node1.elem < node2.elem; }} ;由此我猜想,STL里面的less<TYPE>和greater<TYPE>应该是重载括号运算符
一、对于基本类型:然后,如果是要大的数优先级高,那么这样声明:priority_queue<int, vector<int>, less<int> > PQ;如果是要小的数优先级高,那么这样: priority_queue<int, vector<int>, greater<int> > PQ;
其中的vector用list好像会出错,具体原因再去了解
插入用push(1);取出用top();弹出用pop();
二、对于结构:方法一:如果不是基本类型,那么要重载括号运算符,声明还是一样的 priority_queue<Node, vector<Node>, greater<Node> > PQ; 在Node结构里面添加如下函数:bool operator < (const Node& other) const { return this->elem < other.elem; }//没有这个函数,less<Node>则会报错 bool operator > (const Node& other) const { return this->elem > other.elem; }//没有这个函数,greater<Node>则会报错
方法二:不用less<Node>和greater<Node>的形式,而是自己来定义,声明的时候这样写: priority_queue<Node, vector<Node>, cmp > PQ;
在外面重新写一个结构,如下:struct cmp{ bool operator() (const Node& node1, const Node& node2){ return node1.elem < node2.elem; }} ;由此我猜想,STL里面的less<TYPE>和greater<TYPE>应该是重载括号运算符
相关文章推荐
- STL优先级队列(priority_queue)和集合(set)的使用
- C++ 标准模板库STL 优先级队列 priority_queue 使用方法与应用介绍(一)
- STL系列之五 priority_queue 优先级队列
- java中PriorityQueue优先级队列的使用
- UVA-LA 3135 2004年北京站C题 STL priority_queue自定义优先顺序优先队列的使用
- STL中的优先队列priority_queue的使用方法
- 【转】java中PriorityQueue优先级队列使用方法
- STL 优先队列priority_queue 使用练习
- STL系列之五 priority_queue 优先级队列
- STL:队列(queue)、优先级队列(priority_queue )及双向队列(deque)总结
- STL系列之五 priority_queue 优先级队列
- C++ STL入门教程(4)——stack(栈),queue(队列),priority_queue(优先队列)的使用(附完整程序代码)
- java中PriorityQueue优先级队列使用方法
- STL priority_queue 优先级队列
- STL中的优先级队列priority_queue
- java中PriorityQueue优先级队列使用方法
- C++ STL中的优先队列(priority_queue)使用
- STL系列之五 priority_queue 优先级队列
- java中PriorityQueue优先级队列使用方法
- 【day0414 C++】优先级队列 priority_queue的使用