跳转至

lambda

lambda表达式

lambda表达式是一种可调用对象(callable object),即可以编写代码e(args)的对象e

可调用对象包括

  • 函数
  • 函数指针
  • 重载了函数调用符的类
  • lambda

lambda表达式具有如下格式

[capture list](parameter list) -> return type {function body}

其中capture list是一个lambda所在函数中定义的局部变量的列表

// 大顶堆
auto comp = [](ListNode* a, ListNode* b) -> bool { return a->val > b->val; };
priority_queue<ListNode*, vector<ListNode*>, decltype(comp)> pq(comp);

再比如sort vector

vector<pair<int, int> > v;
v.push_back({5, 0});
v.push_back({4, 4});
v.push_back({5, 2});
v.push_back({6, 1});
sort(v.begin(), v.end(), [](pair<int, int> a, pair<int, int> b) -> bool { return (a.first < b.first) || (a.first == b.first && a.second < b.second);});
for (auto p : v) cout << p.first << ' ' << p.second << '\n';

结果为

4 4
5 0
5 2
6 1