"error: no matching function for call to 'std::priority_queue<int>::priority_queue(int)' pri



我尝试使用constructorpriority_queue分配内存,但收到以下错误:

没有匹配的构造函数来初始化 'priority_queue pq(3('

为什么这在priority_queue中不起作用,但在vectors 中正常工作?

#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_queuestd::vector不是一回事,并且没有该构造函数。

有关构造函数摘要,请参阅 https://en.cppreference.com/w/cpp/container/priority_queue/priority_queue。

要修复编译错误,您可以改为:

priority_queue<int> pqueue{}; 

最新更新