重载STL排序运算符[重复]

问题描述 投票:0回答:1

我想知道为什么以下运算符重载会失败并出现编译器错误。我使用的类似于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)
      |      ^~~~~~~~

我该如何解决这个问题?

c++ sorting stl
1个回答
0
投票

来自文档,似乎您应该定义比较器

    struct
    {
        bool operator()(const int& a, const int& b) const { return a >= b; }
    }
    customCompare;

    v.sort(v.begin(), e.end(), customCompare);
© www.soinside.com 2019 - 2024. All rights reserved.