stl priority_queue 和堆相关的方法有什么区别?
what is the difference between stl priority_queue and heap-related method?
我用堆相关的操作维护了一个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
的结构似乎也实现了一个堆。
与push
pop
.
的功能更简单
这两个有什么区别吗? (性能、内存和其他)
你觉得哪一个更好?
我可以使用 reserve
来减少内存分配时间,因为容器是向量(用于堆操作)吗?
Working with a priority_queue
is similar to managing a heap in some random access container, with the benefit of not being able to accidentally invalidate the heap.
如果不清楚:您的代码管理随机访问容器中的堆。
我用堆相关的操作维护了一个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
的结构似乎也实现了一个堆。
与push
pop
.
这两个有什么区别吗? (性能、内存和其他)
你觉得哪一个更好?
我可以使用 reserve
来减少内存分配时间,因为容器是向量(用于堆操作)吗?
Working with a
priority_queue
is similar to managing a heap in some random access container, with the benefit of not being able to accidentally invalidate the heap.
如果不清楚:您的代码管理随机访问容器中的堆。