cpp排序中的比较器

时间:2019-10-18 08:09:07

标签: c++ sorting

我是cpp的新手,我刚刚看到了使用this []编写比较器以进行排序的新方法,所以这里的用途是什么,因为当我在 正常方式下,我遇到这样的错误

编辑:错误

/code/Solution.cpp:22:52: error: invalid use of non-static member function sort(intervals.begin(),intervals.end(),comp);

bool comp(vector<int>&v1, vector<int>&v2) {
return v1[1] < v2[1];
}

原始和合法的方式

class Solution {
public:
    int eraseOverlapIntervals(vector<vector<int>>& intervals) {
        sort(intervals.begin(), intervals.end(), [](auto &a, auto &b) {
            return a[1] < b[1];
        });
        int prev = INT_MIN;
        int ans = 0;
        for (auto &it : intervals) {
            if (it[0] >= prev) {
                prev = it[1];
            }
            else
                ++ans;
        }
        return ans;
    }
};

1 个答案:

答案 0 :(得分:0)

[]是C ++中lambda的开头。

您可以在此处阅读有关lambda的书面答复:

What is a lambda expression in C++11?

此外,您没有提供原始代码,因此我无法指出错误。但是从错误消息来看,您创建的函数comp似乎在一个类中。一种方法是使函数成为全局函数,然后您应该可以轻松地传递它。另一种选择是使函数静态(我认为这是合理的)。然后,您可以像这样传递它:sort(a.begin(), a.end(), A::comp)其中A是创建此函数的类。