在C++中使用排序谓词
Using sorting predicates in C++
我已经在函数中实现了结构跟踪的比较:
bool sortingPredicate(const Track& l, const Track& r)
那么我有一个函数:
void sortPlaylist(std::list<Track>& playlist, bool (*predicate)(const Track& l, const Track& r)) {
playlist.sort(predicate);
}
我试过:
std::list<Track> mergeWithoutDuplicates(const std::list<Track>& l, const std::list<Track>& r) {
sortPlaylist(l, sortingPredicate<Track>());
...
}
我得到排序播放列表调用:
error: expected primary-expression before ‘>’ token
error: expected primary-expression before ‘)’ token"
我在函数调用/做错了什么?非常感谢。
sortingPredicate<Track>()
是一个函数调用,您不会将其作为回调传递。它应该是:
sortPlaylist(l, sortingPredicate);
另外,请注意,l
const
在 mergeWithoutDuplicates
内部,但您将其传递给需要非const
引用的sortPlaylist
。这也是错误的。
相关文章:
- 二叉排序树无法编译
- std::condition_variable::wait()如何评估给定的谓词
- 仅使用绝对值对数组进行排序,并在C++中显示实际值
- C++选择排序算法中的逻辑错误
- 使用C++程序合并排序没有得到正确的输出
- 计算排序向量的向量中唯一值的计数
- 排序谓词没有传递对索引对象的引用?
- 解释标准库排序函数C++的比较谓词的工作原理?
- 在 O(N) 时间内使用布尔谓词函数对向量进行排序
- 在C++中使用排序谓词
- std::将排序谓词映射到按字符串大小排序,但保留不同的字符串
- 使用自定义谓词对类成员进行排序
- 对具有 lambda 谓词的向量进行部分排序
- 保持排序序列,不包含小于谓词
- std::list指针上排序算法的STL谓词
- 错误C2914:排序函数无法识别要使用重载谓词的哪个版本
- STL:指针关联排序容器:排序谓词模板
- 如何命名比较谓词函数排序向量
- 排序不喜欢我的谓词
- 如何在c++中为模板化容器类定义排序谓词