【发布时间】: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。