::priority_queue(int) ' priority_queue pqueue(4); "-6ren"> ::priority_queue(int) ' priority_queue pqueue(4); "-我尝试使用 constructor 为 priority_queue 分配内存,但出现以下错误: No matching constructor for initialization of 'prio-6ren">
gpt4 book ai didi

c++ - "error: no matching function for call to ' std::priority_queue::priority_queue(int) ' priority_queue pqueue(4); "

转载 作者:行者123 更新时间:2023-11-28 01:18:01 26 4
gpt4 key购买 nike

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

No matching constructor for initialization of '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);

}

最佳答案

related question

std::priority_queue 没有这样的 constructor ,但下面的代码实现了你想要的:

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));

使用这种方式,您应该定义您的比较器并将其传递给构造函数

关于c++ - "error: no matching function for call to ' std::priority_queue<int>::priority_queue(int) ' priority_queue<int> pqueue(4); ",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57970862/

26 4 0