推送对和int的优先级队列

时间:2015-07-25 10:57:17

标签: c++ priority-queue

我想像这样使用priority_queue

priority_queue< pair< int, int> ,int ,cmp >

比较应基于非递减顺序的int值。

示例:

((2,5),1),((2,5),2),((2,5),3)

2 个答案:

答案 0 :(得分:1)

再次阅读std::priority_queue的模板参数。第二个参数是底层容器。您无法使用int

您似乎要问的是如何将pairint存储在优先级队列中,并按int排序。好吧,你已经找到了如何存储pair的整数。只需扩展该想法并存储pair pairint struct。这是一个天真的解决方案。相反,我建议使用pair intstruct作为成员,以便为其提供描述性名称。考虑将pair用于int的整数。然后,只需使用比较函数,该比较函数仅按您选择的顺序比较第三个pair而忽略import * as utils from 'utils';

答案 1 :(得分:0)

priority_queue只接受一个元素,我只是指任意类型的单个元素。为了在优先级队列中有一对,int和另一个组件,你需要将它们全部作为一个意义,你需要构建一个能够保存它们的结构。然后你必须使用bool运算符&lt;告诉编译器如何比较您的类型的元素。

    bool operator < ( const structName& left, const structName& right)
{
     return left.number < right. number;
}

这意味着必须使用名为number的成员进行比较。