我知道已有关于它的问题,并且我遵循了所有的提示,但它仍然不起作用,所以我会很高兴知道什么是错的。
我有这个结构:
struct Scores
{
int _score;
std::string _name;
};
我希望通过_score对矢量进行排序 - 从高到低。这就是我写的:
std::sort (_scores.begin(), _scores.end(), myFunction);
我有这个功能:
bool myFunction (const struct Scores &i, const struct Scores &j)
{return i._score>j._score;}
我已经包含了算法,所以我真的不知道是什么问题。我收到这些错误:
error C3867: 'HighScores::myFunction': function call missing argument list;
error C2780: 'void std::sort(_RanIt,_RanIt)' : expects 2 arguments - 3 provided
谢谢
答案 0 :(得分:0)
在您的示例中,myFunction看起来像是成员类函数。它必须是静态的,才能成为std::sort
算法的正确谓词。或者,您可以使此功能成为免费的优秀功能。
或者你可以制作一个仿函数
struct Sorter {
bool operator ()( const Scores &o1, const Scores &o2) {
return o1._score > o2._score;
}
};
并将此实例传递给算法:
std::sort ( _scores.begin(), _scores.end(), Sorter());
答案 1 :(得分:0)
除了@bits_international,你也可以像在C ++ 11中那样做。
std::sort(_scores.begin(), _scores.end(), [](const Score& a, const Score& b) {
return a._score > b._score;
});
我希望它有所帮助。