使用priorityqueue初始化向量

时间:2016-06-08 17:49:32

标签: c++ vector initialization priority-queue

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

  

无匹配构造函数用于初始化' 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优先级队列的基础容器初始化向量?

1 个答案:

答案 0 :(得分:2)

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

C ++标准不保证。

构建完成后,priority_queue不会对基础容器提供public访问权限,因此您无法从中初始化std::vector

但是,显然,您可以做的是将std::priority_queue子类化,子类显然可以访问继承的protected成员c,该成员应该是基础std::vector 1}},你可以用来复制 - 构造另一个向量。