我尝试使用constructor
为priority_queue
分配内存,但收到以下错误:
没有匹配的构造函数来初始化 'priority_queue pq(3('
为什么这在priority_queue
中不起作用,但在vector
s 中正常工作?
#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);
}
相关问题
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
。
具有限制性接口的std::priority_queue
与std::vector
不是一回事,并且没有该构造函数。
有关构造函数摘要,请参阅 https://en.cppreference.com/w/cpp/container/priority_queue/priority_queue。
要修复编译错误,您可以改为:
priority_queue<int> pqueue{};