• C++11改动


    Spaces in Template Expressions模板表达式中的空格

    在这里插入图片描述

    nullptr and std::nullptr_t

    (1)用nullptr代替0和NULL;空指针;
    (2)nullptr的类型是std::nullptr_t,定义在头文件cstddef中;
    在这里插入图片描述

    自动类型判断auto

    (1)之前auto就是局部变量的意思,但是现在auto表示自动类型判断;
    (2)编译器本身就具备自己判断类型的能力;
    在这里插入图片描述

    auto关键字

    在这里插入图片描述
    在这里插入图片描述

    首先判断版本支持C++2.0;标准库本身也在使用auto;
    这里是reverse_iterator是迭代器适配器,利用到了迭代器萃取机进行提问回答difference_type的类型作为函数返回类型;

    Uniform Initialization一致性的初始化

    在这里插入图片描述
    (1)之前的初始化可能用到{},(),=赋值;
    (2)任意的初始化都可以统一用{}进行初始化,设置初值;
    (3)因为编译器遇到{}时会自动生成一个initializer_list< T >,其中T就是int,int,string,double这些,背后 其实是一个array,n是元素个数,然后一个一个传给调用的函数(就是int values的构造函数),如果本身接受的就是initial_list,就不用一个一个赋值,直接整个传过去;
    (4)使用容器是通过调用容器的构造函数,接受initializer_list< T >
    (5)没有像容器那样的构造函数是,将传入的数据分解再传入

    initializer_list

    在这里插入图片描述
    使用{}不允许窄化转换;例如double转int是不被允许的;但编译器通常会给出警告而不是错误

    initializer_list的应用

    在这里插入图片描述

    • 此处也是对应任意数量的参数,对应生成一个initializer_list,但是注意,这里的类型只能一致指定的int,因为其背后实现是一个array数组;和tuple不同,tuple更加强大,任意数量任意类型;
    • 这也是应用initializer_list<>的一个方法;

    • (1)当是complex< T > 时就调用版本1构造函数;因为使用complex时
      (2)如果没有版本2,q,s还可以使用,因为会被拆解成两个参数,就可以调用版本1,r则不合法操作;
      (3)右侧是initailizer_list的源代码实现;其data是一个arary的迭代器(指向array的头部),size_type元素个数;编译器看到{}可以调用initializer_list类private中的一个构造函数,(外部都不可以调用),在看到{}之后就会调用此处,(在调用这个隐私构造函数前,编译器会提前创建一个array并把其头迭代器传入此函数参数中)
    p s={77,5};//调用构造函数
    s=q;//需要重载运算符=
    
    • 1
    • 2

    initializer_list<>没有内含array

    在这里插入图片描述
    并没有内含着一个array容器,构造函数只是传入一个array迭代器;因此在拷贝的时候,还是相同的元素,传递的只是指针而已(浅拷贝);原来的一包和新的一包指向同一个array;

    initializer_list<>在库中应用广泛,说明可以接收数量不定的参数

    在这里插入图片描述
    使用测试
    在这里插入图片描述

    array容器

    就可以与STL对接,数组就变成一个容器了,因为算法只跟迭代器对接;
    array内含一个数组
    在这里插入图片描述

  • 相关阅读:
    说几句得罪人的大实话
    现代数据栈:高效开发数据,辅助企业决策
    ​DPDK 高效原因初探
    vue3中播放flv流视频,以及组件封装超全
    vue3 使用setup语法糖实现分类管理
    MySQL之索引
    《500强高管谈VE》-企业经营与VE活动
    c++图像的边缘检测
    git删除文件提交,删除文件按后这个记录怎么提交?
    华为数通方向HCIP-DataCom H12-821题库(单选题:261-280)
  • 原文地址:https://blog.csdn.net/weixin_44570263/article/details/126035041