【问题标题】:what is the difference between stl priority_queue and heap-related method?stl priority_queue 和堆相关方法有什么区别?
【发布时间】:2021-12-30 17:48:48
【问题描述】:

我使用堆相关操作来维护heap 结构。

例如:

std::vector<int> a = {1,2,56, 2};
std::make_heap(a.begin(), a.end());
// add
a.push_back(3);
std::push_heap(a.begin(), a.end());
// erase
std::pop_heap(a.begin(), a.end());
int v = a.back();
a.pop_back();

最近发现有一个名为priority_queue的结构体似乎也实现了一个堆。

pushpop功能更简单。

这两者有什么区别吗? (性能、内存和其他方面)

你认为哪个更好?

我可以使用reserve 来减少内存分配时间,因为容器是向量(用于堆操作)?

【问题讨论】:

  • “你认为哪个更好?” -- 你应该删除这部分问题,因为没有“更好”的客观标准,它是基于意见的。另外,每个问题一个问题。
  • "can i use reserve to [...]" -- 鉴于 Stack Overflow 禁止一个问题包含多个问题,我建议您将其从您的问题中删除。但在您为此发布新问题之前,请查看priority_queue underlying vector container capacity resize

标签: c++ stl


【解决方案1】:

cppreference.com:

使用priority_queue 类似于在某些随机访问容器中管理heap,其好处是不会意外使堆无效。

如果不清楚:您的代码管理随机访问容器中的堆。

【讨论】:

    猜你喜欢
    • 2011-05-06
    • 2013-06-27
    • 2016-08-18
    • 1970-01-01
    • 2011-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多