C++优先队列中参数的意义?

看我写的参数意义:
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里的东西,现在用到的地方只有一两个,不急于深了解他,只快速的想用它。
       谢谢您的回答!!
            */


慕粉18341035298
浏览 2118回答 1
1回答

朕日理万机

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函数作为比较标准。于是越小的数优先级越高。第二个例子,目测不对,类型不一致。
打开App,查看更多内容
随时随地看视频慕课网APP