优先队列堆

时间:2019-01-15 22:44:24

标签: c++ algorithm stl heap priority-queue

是否可以用O(N)复杂度的某些元素初始化优先级队列?可能使用heapify算法。

我搜索了该问题,但找不到解决方案。另外,我知道make_heap(),但这是另一回事,而不是优先级队列。

1 个答案:

答案 0 :(得分:3)

  

是否可以用O(N)复杂度的某些元素初始化优先级队列?

是; std::priority_queue<...>为此具有一个构造函数。 https://en.cppreference.com/w/cpp/container/priority_queue/priority_queue给出了以下示例:

std::vector<int> vec={3, 1, 4, 1, 5};
std::priority_queue<int> c3(std::less<int>(), vec);

c3初始化为包含vec元素的优先级队列(最小堆)。