我想知道为什么以下运算符重载会失败并出现编译器错误。我使用的类似于here所建议的。
bool operator >(const int &a, const int &b)
{
return (a>=b) ? 1 : 0;
}
int main() {
vector<int> v;
v.push_back(3); v.push_back(30);
v.push_back(34); v.push_back(5);
v.push_back(9);
v.sort(v.begin(), v.end());
return 0;
}
错误:
error: 'bool operator>(const int&, const int&)' must have an argument of class or enumerated type
12 | bool operator >(const int &a, const int &b)
| ^~~~~~~~
我该如何解决这个问题?
来自文档,似乎您应该定义比较器
struct
{
bool operator()(const int& a, const int& b) const { return a >= b; }
}
customCompare;
v.sort(v.begin(), e.end(), customCompare);