【C ++ Primer】ch10 习题解答

本文提供了C++ Primer第10章的练习解答,涉及了Sales_data对象的isbn比较、使用partition函数筛选单词、lambda表达式实现函数、biggies函数重写、以及count_if和unique_copy等标准库算法的应用。同时,讲解了如何从文本文件读取内容并存入vector<string>中。
摘要由CSDN通过智能技术生成

声明:部分借鉴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>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值