闲来无事刷刷leetcode,目前刷了100多,不过都是用c来写的,发现有点刷不动,开始学习c++,用c++来刷,自己AC之后,去讨论区看答案,发现一个写法:
class Solution {
public:
vector<vector<int>> allCellsDistOrder(int R, int C, int r0, int c0) {
vector<vector<int>> v;
for(int i=0; i < R; i++) for(int j=0; j < C; j++) v.push_back({i, j});
sort(v.begin(), v.end(), [r0, c0](const vector<int> &a, const vector<int> &b) {return abs(a[0] - r0) + abs(a[1] - c0) < abs(b[0] - r0) + abs(b[1] - c0);});
return v;
}
};
我原本的实现是vector里push三个int,然后排序,排序完再删掉第三个int ,看讨论区这位大佬的写法更简洁。
sort第三个参数是个函数指针,前面的[r0,c0]这是什么用法?
@fefe 感谢fefe, lambda 表达式 此贴完结。