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

标签 c++ oop stl queue priority-queue

我尝试使用 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/

相关文章:

javascript - Eloquent JavaScript : Persistent Group

c++ - 使用 C++ 读取 Cookie(客户端)

php - 如何获取mysql中某一个月所有产品的总和

c++ - 推导显式特化函数模板类型

PHP:接口(interface)中的抽象方法

c++ - Valgrind 显示 std::vector<> alloc 的次数超过空闲时间,但没有内存泄漏

c++ - 如何从 priority_queue 中拉出 unique_ptr 并维护所有权语义

c++ - 原子地 std::vector::push_back() 并返回索引

c++ - 静态断言模板类型名 T 不完整?

c++ - 修改 TestAssert.h (cppunit) - 为什么包含的顺序对宏扩展很重要?