在C++中使用排序谓词

Using sorting predicates in C++

本文关键字:排序 谓词 C++      更新时间:2023-10-16

我已经在函数中实现了结构跟踪的比较:

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 constmergeWithoutDuplicates 内部,但您将其传递给需要非const引用的sortPlaylist。这也是错误的。