我是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;
}
};
答案 0 :(得分:0)
[]
是C ++中lambda
的开头。
您可以在此处阅读有关lambda的书面答复:
What is a lambda expression in C++11?
此外,您没有提供原始代码,因此我无法指出错误。但是从错误消息来看,您创建的函数comp似乎在一个类中。一种方法是使函数成为全局函数,然后您应该可以轻松地传递它。另一种选择是使函数静态(我认为这是合理的)。然后,您可以像这样传递它:sort(a.begin(), a.end(), A::comp)
其中A是创建此函数的类。