您的位置:首页 > 产品设计 > UI/UE

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>应该是重载括号运算符
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: