Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.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++ 解释默认优先级队列::top()的行为?_C++_Stl_Priority Queue - Fatal编程技术网

C++ 解释默认优先级队列::top()的行为?

C++ 解释默认优先级队列::top()的行为?,c++,stl,priority-queue,C++,Stl,Priority Queue,默认情况下,std::priority_队列使用std::vector和std::less比较器。默认情况下,优先级队列是最大堆 各国: top元素是在priority\u队列中比较高的元素,在调用priority\u队列::top时从容器中删除的下一个元素 此成员函数有效地调用底层容器对象的memberfront 因此,一个默认构造的优先级\u队列由如下构造的整数组成: auto maxheap = priority_queue<int>(); maxHeap.push(1); m

默认情况下,
std::priority_队列使用
std::vector
std::less
比较器。默认情况下,优先级队列是最大堆

各国:

top元素是在
priority\u队列中比较高的元素,在调用
priority\u队列::top
时从容器中删除的下一个元素

此成员函数有效地调用底层容器对象的member
front

因此,一个默认构造的
优先级\u队列
由如下构造的整数组成:

auto maxheap = priority_queue<int>();
maxHeap.push(1);
maxHeap.push(3);
cout << maxHeap.top(); // outputs 3
由于
std::less
按升序排序,因此调用
vec.front()
最终返回的值最小


我对
priority\u queue::top()
的默认行为和文档内容的理解有些脱节。有人能给我解释一下吗?

你使用了错误的算法,你可以在
std::priority\u队列
不使用
std::sort
,而是使用
std::make\u heap

如果您在示例中也使用它,您将获得预期的输出

std::向量队列{1,3};
std::make_heap(queue.begin()、queue.end()、std::less{});
标准::cout
auto vec = vector<int>{3, 1};
sort(vec.begin(), vec.end(), less<int>()); // {1, 3}
cout << vec.front(); // outputs 1