cag*_*bal 16 c++ priority-queue
我正在使用priority_queue将vector作为底层容器.但是我希望堆的大小非常大.我知道动态矢量容量调整大小的问题.所以我正在寻找最初为priority_queue中的底层向量分配足够空间的方法.有什么建议可以实现这个目标吗?
谢谢
vis*_*tor 24
stdlib容器适配器提供了一个"后门"来访问底层容器:容器是一个受保护的成员c.
因此,您可以从适配器继承以获取对容器的访问权限:
#include <queue>
#include <iostream>
template <class T>
class reservable_priority_queue: public std::priority_queue<T>
{
public:
typedef typename std::priority_queue<T>::size_type size_type;
reservable_priority_queue(size_type capacity = 0) { reserve(capacity); };
void reserve(size_type capacity) { this->c.reserve(capacity); }
size_type capacity() const { return this->c.capacity(); }
};
int main()
{
reservable_priority_queue<int> q;
q.reserve(10000);
std::cout << q.capacity() << '\n';
}
Run Code Online (Sandbox Code Playgroud)
如果您对从stdlib类继承感到不满,请使用私有继承并priority_queue使用using声明来使所有可访问的方法.