是的,我知道这是一个重复的问题,我已经知道我正在寻找的 anwser 在这里:
但是,我在将其转换为我自己的代码时遇到了问题。我正在查看上述问题中的这段代码片段:
struct SortByX
{
bool operator() const(MyClass const& L, MyClass const& R) {
return L.x < R.x;
}
};
std::sort(vec.begin(), vec.end(), SortByX();
我不明白的是MyClass const & L
, 和 代表什么MyClass const & R
。而且我没有掌握如何将其应用于我的代码。
为了提供更多细节,我将 3 个排序方法放入具有 ( string
, double
, double
, double
, bool
) 参数的对象向量的包装类中。总体目标是vector
按string
、bool
和 3 个双打中的任何一个来排序。
这是我拥有的最新版本:
void StationVector::sortByGrade(int kindOfGas) {
struct SortByGrade {
int kindOfGas;
SortByGrade(int kindOfGas) :
kindOfGas(kindOfGas) {
}
bool operator()(GasStation const &L, GasStation const & R) const {
return L.getPrice(kindOfGas) < R.getPrice(kindOfGas);
}
};
std::sort(localStations.begin(), localStations.end(),
SortByGrade(kindOfGas));
}
该行SortByGrade(kindOfGas))
给了我以下错误:
调用 `sort(__gnu_cxx::__normal_iterator >>, __gnu_cxx::__normal_iterator >>, model::StationVector::sortByGrade(int)::SortByGrade)' 没有匹配函数