gpt4 book ai didi

C++ priority_queue 底层 vector 容器容量调整大小

转载 作者:IT老高 更新时间:2023-10-28 22:18:54 32 4
gpt4 key购买 nike

我正在使用带有 vector 的 priority_queue 作为底层容器。但是我希望堆的大小非常大。我知道动态 vector 容量调整大小的问题。所以我正在寻找方法来为我的priority_queue 中的底层 vector 最初分配足够的空间。有什么建议可以实现这一目标吗?

谢谢

最佳答案

stdlib 容器适配器提供了一个“后门”来访问底层容器:容器是一个名为 c 的 protected 成员。

因此,您可以从适配器继承以获得对容器的访问权限:

#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';
}

如果您对从 stdlib 类继承感到不舒服,请使用私有(private)继承,并通过 using 声明使 priority_queue 的所有方法可访问。

关于C++ priority_queue 底层 vector 容器容量调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3666387/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com