从数组到优先级队列

时间:2015-12-04 18:45:41

标签: c++ arrays priority-queue

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

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作为容器。我应该如何修改代码才能使其正常工作?我知道我可以在声明优先级队列之前将项目放入向量,但我很好奇是否有办法只使用数组。

2 个答案:

答案 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);