我想像这样使用priority_queue
:
priority_queue< pair< int, int> ,int ,cmp >
比较应基于非递减顺序的int
值。
示例:
((2,5),1),((2,5),2),((2,5),3)
答案 0 :(得分:1)
再次阅读std::priority_queue的模板参数。第二个参数是底层容器。您无法使用int
。
您似乎要问的是如何将pair
和int
存储在优先级队列中,并按int
排序。好吧,你已经找到了如何存储pair
的整数。只需扩展该想法并存储pair
pair
和int
struct
。这是一个天真的解决方案。相反,我建议使用pair
int
和struct
作为成员,以便为其提供描述性名称。考虑将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的成员进行比较。