从数组到优先队列

From array to priority queue

我有从这个结构创建的数组中的项目:

struct ks{
    int cap;
    int val;
};

数组名为 items 并包含 quantity 个项目。

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 中,但我很好奇是否有一种方法可以只用数组来做到这一点。

按要求回答问题:

std::priority_queue <ks, std::vector<ks>, itemsCompare> comparedItems;

不过,这个问题有些问题没有直接问。首先,它对不受控制的物质进行了划分:)。如果除以 0 会发生什么?

其次。您将整数除以整数。这个结果总是整数,不知何故我怀疑这是你想要的。

要从数组创建 std::priorty_queue,您可以使用

std::priority_queue <ks, std::vector<ks>, itemsCompare> comparedItems(items, items + quantity);