c++ - 如何预分配(保留)priority_queue<vector>?

标签 c++ vector std priority-queue allocation

如何使用 std::vector 类型的容器预分配 std::priority_queue

std::priority_queue<unsigned char, std::vector<unsigned char>> pq;
pq.c.reserve(1024);

不编译,因为底层 vector 是一个 protected 成员。 是否可以使用 priority_queue 的构造函数将其包装在预先保留的 vector 周围?

最佳答案

是的,有一个 constructor为了那个原因。您还必须指定一个比较器,这有点乏味:

std::vector<unsigned char> container;
container.reserve(1024);
std::priority_queue<unsigned char, std::vector<unsigned char>> pq (
    std::less<unsigned char>(), std::move(container));

您还可以使用 evil shenanigans访问 protected 成员,但我不推荐它。

关于c++ - 如何预分配(保留)priority_queue<vector>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29235978/

相关文章:

C++ 组合 2 个数组,数据有序

c++ - 事件处理继承 (C++)

c++ - Qt/C++中多线程的随机函数调用

C++ 如何创建一个动态 vector 数组?

c++ - cout 不是 std 的成员

c++ - 如何将 WebKit 嵌入到我的 C/C++/Win32 应用程序中?

c++ - 使用 EIGEN 库填充动态 vector

r - 将位向量写入R中最小大小的文件中

C++ - 按自定义数据类型 vector 的值删除元素

c++ - 为什么用 std::function 重载函数需要中间变量