熟悉 C++11

C++ 是⼀门古⽼的语⾔,但它的标准⾄今仍在不断发展。在 2011 年、 2014 年和 2017 年, C++ 的标准又进⾏了更新,被称为 C++11, C++14, C++17。其中, C++11 标准是最重要的⼀次更新,让 C++发⽣了重要的改变,也使得近年来的 C++ 程序与你在课本上(⽐如谭浩强)学到的 C++ 程序有很⼤的不同。你甚⾄会惊叹这是⼀种全新的语⾔。 C++14 和 C++17 则是对 11 标准的完善与扩充。越来越多的程序开始使⽤ 11 标准,它也会让你在写程序时更加得⼼应⼿。本题中,你将学习⼀些 11标准下的新语法。请参考本次作业 books/⽬录下的两个 pdf,并回答下⾯的问题。

设有类 A,并有 A 类的⼀组对象,组成了⼀个 vector。现在希望对这个 vector 进⾏排序,但排序的⽅式由 A.index 成员⼤⼩定义。那么,在 C++11 的语法下,程序写成:

#include <iostream>
#include <vector>
#include<algorithm>

using namespace std;

class A{
    public:
    A(const int& i):index(i){}
    int index=0;
};

int main(int, char**){
    A a1(3),a2(5),a3(9);
    vector<A> avec{a1,a2,a3};
    //lambda表达式,定义匿名函数
    //sort函数 序列排序
    sort(avec.begin(),avec.end(),[](const A&a1,const A&a2) {return a1.index<a2.index;});
    //使用auto进行自动类型推导,无需确定类型
    //使用新型for函数,a:avec进行遍历
    for( auto& a: avec )cout<<a.index<<"  ";
    cout<<endl;
    return 0;
}

请说明该程序中哪些地⽅⽤到了 C++11 标准的内容。提⽰:请关注范围 for 循环、⾃动类型推导、 lambda表达式等内容(见注释)
 

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值