c++ - 使用优先级队列初始化 vector

标签 c++ vector initialization priority-queue

我在一本关于算法的书中找到了类似下面的代码。该代码尝试从 max_heap 的当前状态初始化一个 vector 。但是,Xcode (7.3) 中的以下代码会产生编译时错误:

No Matching Constructor for initialization of 'vector'

// declaring priority queue
priority_queue<Star, vector<Star>> max_heap;


// pushing/popping to/from heap

// initializing vector with heap
vector<Star> closestStars(max_heap);

要么书有误,要么我做错了什么。在前一种情况下,是否有正确的方法从 STL 优先级队列的底层容器初始化 vector ?

最佳答案

这本书可能假定 priority_queuestd::vector 的子类。

C++ 标准不保证这一点。

一旦构建,priority_queue 不提供对底层容器的public 访问,因此您不能从中初始化std::vector

但是,显然,您可以做的是子类化您的 std::priority_queue,该子类显然可以访问继承的 protected 成员 c ,它应该是底层的 std::vector,您可以使用它来复制构造另一个 vector 。

关于c++ - 使用优先级队列初始化 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37709500/

相关文章:

c++ - Halide:将 C++ 函数传递给 Halide Func

c++ - 为一个 C++ vector 成员添加一个标志

java - 删除重复项,同时保持并行列表同步

c++ - 为什么从临时初始化的引用成员仍然可读?

c++ - 如何创建 vector 的 vector ?

c++ - 什么是独立于操作系统的方式来打开 C++ 中关联程序的文件?

python - 在嵌套列表中查找和分组相同的值(浮点向量)

c++ - 在头文件中初始化常量静态数组

Python装饰器自动定义__init__变量

安卓/java/src/pcf : No such file or directory