是否可以用O(N)复杂度的某些元素初始化优先级队列?可能使用heapify算法。
我搜索了该问题,但找不到解决方案。另外,我知道make_heap(),但这是另一回事,而不是优先级队列。
答案 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
元素的优先级队列(最小堆)。