声明:部分借鉴github项目:https://github.com/Mooophy/Cpp-Primer/tree/master/ch10
练习 10.12: 编写compareIsbn的函数,比较两个Sales_data对象的isbn()的成员
<span style="font-size:18px;">struct Sales_data{
string isbn;
Sales_data(string s){
isbn = s;
}
};
inline bool compareIsbn(const Sales_data& a, const Sales_data& b)
{
return a.isbn.size() < b.isbn.size();
}
int main()
{
Sales_data d1("aa"), d2("aaaa"), d3("aaa"), d4("z"), d5("aaaaz");
vector<Sales_data> v{ d1, d2, d3, d4, d5 };
sort(v.begin(), v.end(), compareIsbn);
for(const auto &elem : v)
cout << elem.isbn << " ";
cout << endl;
return 0;
}</span>
练习10.13 : 标准库定义了partition函数,用此函数划分words。打印长度大于等于5的元素
<span style="font-size:18px;">bool predicate(const string& s)
{
return s.size() >= 5;
}
int main()
{
auto v = vector<string>{ "a", "as", "aasss", "aaaaassaa", "aaaaaabba", "aaa" };
auto pivot = partition(v.begin(), v.end(), predicate);
for(auto it = v.cbegin(); it != pivot; ++ it)
cout << *it << endl;
return 0;
}</span>
练习 10.14: 编写一个lambda, 接受两个int, 返回它们的和
<span style="font-size:18px;"><span style="font-size:18px;">auto f = [](int a, int b){return a + b;};
cout << f(5, 6) << endl;</span></span>
练习 10.15: 编写一个lambda, 捕获它所在函数的int,并接受一个int参数,返回二者和。
<span style="font-size:18px;"><strong> </strong> int p = 10;
auto f = [p](int a){return p + a;};
cout << f(5) << endl;</span>