使用优先级队列初始化向量
Initializing a vector with a priorityqueue
我在一本关于算法的书中找到了类似于以下内容的代码。 该代码尝试从max_heap的当前状态初始化向量。 但是,Xcode (7.3) 中的以下代码会产生编译时错误:
没有用于初始化"向量"的匹配构造函数
// 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 优先级队列的底层容器初始化向量?
这本书可能假设priority_queue
是std::vector
的一个子类。
C++标准不能保证这一点。
构造后,priority_queue
不提供对基础容器的public
访问,因此无法从中初始化std::vector
。
然而,显然,你可以做的是子类化你的std::priority_queue
,子类显然可以访问继承的protected
成员c
,这应该是底层std::vector
,你可以用它来复制构造另一个向量。
相关文章:
- 如何使用C++初始化向量;脚本化值不是数组、指针或矢量错误
- 在C++中初始化向量映射的最有效方法
- 我使用向量来创建类对象列表.初始化向量时如何使用参数调用构造函数?
- 用向量的向量元素初始化向量的空向量
- 初始化向量数组,其中每个向量的大小为 0
- 如何初始化向量<unordered_map<*,*>>
- 如何在元组初始化向量中删除样板?
- C++ 通过函数声明后初始化向量
- 特征::向量;在函数中使用 Eigen::Matrix3f 的值初始化向量,大于 4 个条目
- 使用所述填充构造函数初始化向量中的向量
- 制作可用于初始化向量的迭代器
- 如何使用sregex_token_iterator对象初始化向量
- 用空向量 c++ 的 M 元素初始化向量
- 用reference_wrapper本地初始化向量
- 将向量元素与字符串元素进行比较,而不初始化向量
- 使用 reference_wrappers 初始化向量
- 从不同类型的容器的迭代器初始化向量
- 在具有容量/调整大小的类中初始化向量
- 在头文件中声明和初始化向量
- 错误:调用'begin(long double [nPoints])'没有匹配函数;使用硬编码的 int 与整数变量初始化向量