如何在 c++ 中的函数参数中声明优先级队列
How to declare priority queue in function parameter in c++
>我已经声明了一个优先级队列,最小元素位于顶部,如下所示
priority_queue<int, vector<int> , greater<vector<int>> > low;
现在我想将此对象传递给某个函数,为此我需要在函数标头中声明,我尝试声明以下方法
int fun1(priority_queue<int, vector<int> , greater<vector<int>> > min_heap){
return 0;
}
int fun2(priority_queue<int> min_heap){
return 0;
}
在这两种方法中,我都遇到编译错误; 由于类型不匹配,第二种方法显然会出错,但编译器不允许执行第一种方法。 请帮助我。
你应该发布编译器错误,但即使没有它,我也会尝试猜测你的问题。
您的声明可能是错误的,即您的:
priority_queue<int, vector<int> , greater<vector<int>> > low;
应该改为:
priority_queue<int, vector<int> , greater<int> > low;
请注意第三个模板参数。
由于您有int
的queue
,因此必须确实在int
而不是std::vector<int>
上定义比较器。
以这种方式应该编译器。 这里有一个例子。
相关文章:
- Arduino C++在构造函数中用参数声明对象数组
- 如何使用参数声明实例?
- 从非类型模板参数声明 constexpr 数组的可移植方法
- 用相同的参数声明两个构造函数的最偶像化的方法是什么?
- 在实现文件中使用模板参数声明方法
- 使用 std::move 将参数传递给函数,如果该参数声明为按值传递或使用移动操作数 &&,是否有区别?
- 如果我提前将参数声明为变量而不是将它们内联写入函数调用,那有什么区别(在内存方面)?
- 为什么重载运算符>在参数声明 const 时不起作用?
- 字符串无法启动参数声明
- 视觉C++:即使使用关键字,参数声明也会隐藏类成员"this"
- C 迭代器从Typedef std :: Map作为模板参数声明
- 参数声明中的"const T const"
- 如何处理"警告:在参数声明中使用'auto'仅适用于 -fconcepts"
- 将容器作为模板参数声明过滤
- 同时使用模板和参数声明对象
- 从variadic模板参数声明成员变量
- 在 C++ 中,为什么我们在重载函数中将引用参数声明为 const
- 在C++中,是否可以使用定义中未使用的模板参数声明模板结构?
- C++ "无法将参数声明为抽象类型
- 默认参数声明:为什么默认字符串参数必须是 const