看我写的参数意义:
1. priority_queue< int , vector<int> , greater<int> > que;
队列里的数据类型是int?
2. struct node {int a,int b}edge;
typedef pair<int ,int> P;
priority_queue< P, vector<edge> , less<int> > que;
/* 上面是我随意写的,举了两个例子,我是想明白 队列里的数据类型是什么,还有这个优先队列里参数都是干嘛用的,比如 P什么用? 为什么要有vector<>?,其中的edge什么意思? less<> 里的int对整个函数有什么影响?
我不太懂stl里的东西,现在用到的地方只有一两个,不急于深了解他,只快速的想用它。
谢谢您的回答!!
*/
1 回答
已采纳
朕日理万机
TA贡献27条经验 获得超28个赞
priority_queue是一个容器适配器,即把某个底层容器包装起来,好去模拟某种有新功能的数据结构。但这样也就丧失了底层容器的迭代器功能。
priority_queue类模板需要提供三个参数:一个成员类型T,一个底层容器类型Container <T>,和一个比较函数Comp。底层容器默认用vector<T>,而比较函数默认用std::less函数,越大的优先级越高。
你第一个例子
priority_queue< int , vector<int> , greater<int> > que;
意思是,这个priority_queue里的数据类型是int,它是用vector<int>作为底层容器实现,并且用系统提供的greater函数作为比较标准。于是越小的数优先级越高。
第二个例子,目测不对,类型不一致。
- 1 回答
- 0 关注
- 2117 浏览
添加回答
举报
0/150
提交
取消