10.3.2 Exercises Section
2025/10/18小于 1 分钟
10.3.2 Exercises Section
10.14
write a lambda that takes two ints and returns their sum.
10.15
Write a lambda that captures an int from its enclosing function and takes an int parameter.
The lambda should return the sum of the captured int and the int parameter.
10.17
Rewrite exercise 10.12 from § 10.3.1 (p.387) to use a lambda in the call to sort instead of the compareIsbn function.
10.14
实现:
auto e14 = [] (int a, int b) { return a + b; };
auto s14 = e14(1, 2);
cout << "s14:" << s14 << endl;效果:
s14:310.15
实现
int i = 3;
auto e15 = [i] (int j) { return i + j; };
auto s15 = e15(4);
cout << "s15:" << s15 << endl;效果:
s15:7参考答案
void add(int a)
{
auto sum = [a] (int b) { return a + b; }
cout << sum(1) << endl;
}10.17
实现
vector<Sales_item> items = { {"978-7-5713"}, {"978-7-35885"}};
auto e17 = [] (const Sales_item &lhs, const Sales_item &rhs) { return lhs.isbn() < rhs.isbn(); };
sort(items.begin(), items.end(), e17);
for(auto item : items)
cout << item.isbn() << " ";
cout << endl;效果:
978-7-35885 978-7-5713参考
sort(sds.begin(), sds.end(),
[] (const Sales_data &lhs, const Sales_data &rhs)
{ return lhs.isbn() < rhs.isbn(); }
);