我尝试使用 constructor
为 priority_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);
}
最佳答案
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/