我试图使用priority_queue将内存分配给constructor,但得到了以下错误:
没有用于初始化“priority_queue pq(3)”的匹配构造函数
为什么这不是在priority_queue中工作,而是在vector中正确地工作呢?
#include <iostream>
#include <queue>
using namespace std;
int main()
{
priority_queue<int> pqueue(4);
pqueue.push(3);
pqueue.push(5);
pqueue.push(1);
pqueue.push(2);
}发布于 2019-09-17 09:36:28
std::priority_queue没有这样的构造函数,但是下面的代码实现了您想要的东西:
std::vector<int> temporary_container(4);
std::priority_queue<int, std::vector<int>> pqueue (comparator, std::move(container));另外,如果您不想更改queue的大小而只保留内存,您可以这样做:
std::vector<int> temporary_container;
temporary_container.reserve(4);
std::priority_queue<int, std::vector<int>> pqueue (comparator, std::move(container));使用这种方法,您应该定义您的comparator并将其传递给constructor。
发布于 2019-09-17 09:16:00
std::priority_queue具有限制性接口,与std::vector不一样,也没有构造函数。
有关构造函数摘要,请参见队列。
要修复编译错误,只需执行以下操作:
priority_queue<int> pqueue{}; https://stackoverflow.com/questions/57970862
复制相似问题