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