如何使用 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/