【发布时间】:2017-04-08 03:09:02
【问题描述】:
我确信我犯了一些非常愚蠢的错误,但我无法指出。 C++ 的algorithm STL 中的make_heap 函数有语法
void make_heap(v.begin(), v.end(),Compare comp );
其中 v 被声明为 int 向量。
现在 comp 输入默认为 < 但我想更改它以便我可以使用它来创建最小和最大堆。看看其他例子,对我来说有意义的是做类似的事情,
void make_heap(v.begin(), v.end(),std::less<int> );
或
void make_heap(v.begin(), v.end(),std::greater<int> );
但我不断收到编译器错误expected primary expression before ')' token
我不知道我做错了什么? 有什么帮助吗?
【问题讨论】:
-
您正在为第三个参数传递一个类型。它必须是满足比较器要求的类型的对象实例。在那件事的末尾放一些
()。而void则毫无意义。 -
std::less<int>()后面少了一对括号