c++ - 在 C++ 中使用排序谓词

标签 c++ comparison predicate

我已经在函数中实现了对 struct Track 的比较:

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>());
    ...
}

然后我得到 sortPlaylist 调用:

error: expected primary-expression before ‘>’ token
error: expected primary-expression before ‘)’ token"

我在函数调用中遗漏了什么/做错了什么?非常感谢。

最佳答案

sortingPredicate<Track>()

是一个函数调用,您没有将其作为回调传递。应该是:

sortPlaylist(l, sortingPredicate);

另外,请注意 lmergeWithoutDuplicates 中的 const,但是您将它传递给 sortPlaylist需要一个非 const 引用。这也是错误的。

关于c++ - 在 C++ 中使用排序谓词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12562329/

相关文章:

c++ - 具体 "getter setter"专用对象

c++ - pthread_cancel后"terminate called without an active exception"

c++ - 具有简单功能的 boost::asio 服务器

java - 将对象类型作为参数传递给方法?

c# - 在函数参数中使用多个谓词?

c++ - 从 A[a,b] 到 A[c,d] 的不同非循环路径的计数?

sql - 有什么好的 SQL Anywhere 数据库模式比较工具吗?

javascript - 比较两个数组 Javascript - 关联

java - 两个数字之间的 "compare"如何在机器级别实现?

java - 使用谓词创建函数