Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 优先级队列Heapify_C++_Algorithm_Stl_Heap_Priority Queue - Fatal编程技术网

C++ 优先级队列Heapify

C++ 优先级队列Heapify,c++,algorithm,stl,heap,priority-queue,C++,Algorithm,Stl,Heap,Priority Queue,有没有办法用O(N)复杂度的某些元素初始化优先级队列?尽可能使用heapify算法 我找了那个问题,但找不到解决办法。另外,我知道make_heap(),但这是另一回事,与优先级队列无关 有没有办法用O(N)复杂度的某些元素初始化优先级队列 对,std::priority_queue为此提供了一个构造函数。给出以下示例: std::vector<int> vec={3, 1, 4, 1, 5}; std::priority_queue<int> c3(std::less&

有没有办法用O(N)复杂度的某些元素初始化优先级队列?尽可能使用heapify算法

我找了那个问题,但找不到解决办法。另外,我知道make_heap(),但这是另一回事,与优先级队列无关

有没有办法用O(N)复杂度的某些元素初始化优先级队列

对,
std::priority_queue
为此提供了一个构造函数。给出以下示例:

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

它将
c3
初始化为包含
vec

元素的优先级队列(最大堆)。这真的很有道理,没想到这一点很难过,也很抱歉谷歌搜索不好。谢谢。将heapify放入最小堆的比较函数是什么?我知道有一个函数叫做greater();但由于某种原因,它在c++14上似乎不起作用