我有从这个结构创建的数组中的项目:
struct ks{
int cap;
int val;
};
数组名为项,包含数量项目。
items = new ks[quantity];
我想把它们放在优先队列中 - 这基本上意味着对它们进行排序。
这是我的比较功能:
struct itemsCompare{
bool operator () (const ks &item1, const ks &item2){
if (item1.val/item1.cap > item2.val/item2.cap) return true;
return false;
}
};
如何创建此队列?
priority_queue <ks, What should I put here?, itemsCompare> comparedItems;
for(int i=0; i<quantity; i++) comparedItems.push(items[i]);
我知道,该模板需要将vector作为容器。我应该如何修改代码才能使其正常工作?我知道我可以在声明优先级队列之前将项目放入向量,但我很好奇是否有办法只使用数组。
答案 0 :(得分:1)
回答问题:
std::priority_queue <ks, std::vector<ks>, itemsCompare> comparedItems;
然而,问题有一些问题没有直接问到。首先,它是关于不受控制的物质的体育部门:)。如果除以0会发生什么?
二。您将整数除以整数。这个结果总是整数,不知怎的,我怀疑这是你想要的。
答案 1 :(得分:1)
要从数组中创建std::priorty_queue
,您可以使用
std::priority_queue <ks, std::vector<ks>, itemsCompare> comparedItems(items, items + quantity);