priority_queue<int,vector<int>>在vector<int>这一容器类型基础上实现和priority_queue<int>区别
展开全部
/*priority_queue<Type, Container, Functional>
若你直接用priority_queue<int>,他就用通过缺省值使用默认的方法和容器(vector),
即自顶之下,从大到小。若你需要比较其它的值,好比要比较一个pair<int, string>
然后自顶至下是string字典序从小到大,你就需要
priority_queue<pair<int,string>,vector<pair<int, string>>, cmp>,
cmp是一个结构体,在这个结构体中重载运算符()即可。*/
struct cmp{
bool operator()(const pair<int,string> p1, const pair<int,string> p2) {
return p1.second > p2.second;//因为priority_queue的top相当于vector的back
}
};
/*当然你也不一定是一定要用vector这个容器,但只是他默认是vector来实现的。*/
更多追问追答
追问
其他的我都理解,
若你直接用priority_queue,他就用通过缺省值使用默认的方法和容器(vector),
即自顶之下,从大到小。
这句话什么意思?
追答
优先队列的取数方法是top,那不就是顶了吗-.-实际上是默认的优先队列可以看成是一个最大堆,堆顶就是最大的一个数。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询