• c++ 的类型别名 和 C11基于范围的for循环


    c++ 的类型别名 和 C11基于范围的for循环

    目录:

    1. 类型别名的几种方式
    2. C11标准下 基于范围的for循环

    c++为类型创建别名的方式有两种

    第一种是使用预处理器

    #define BYTE char

    说明 : 预处理器将在编译程序的时候用char 替换所有的BYTE,从而使BYTE成为char的别名.

    第二种方式是使用c++的关键字 typedef 来创建别名

    将 byte 作为 char 的别名可以这样操作

    typoedef char byte ;

    通用的格式

    typedef typeName aliasName ;

    如果要将aliasName 作为某种类型的别名 , 可以声明 aliasName , 如同将例如要将aliasName 声明为这种类型的变量那样,然后在声明前面加上关键字 typedef 例如: 要让 byte 成为char类型的指针的别名,可以将byte声明为char指针,然后加上关键字typedef 如下所示

    typedef char* byte;

    同样我们也可以使用 #define, 不过声明一系列变量时,这个方法不适用,例如:

    #define FLOAT flaot *

    FLOAT pa ,pb ;

    //预处理器将该声明转换成这样

    float *pa , pb ;

    使用typedef 不会有这样的问题 , 他能够处理更为复杂的类型, 这样和 #define 相比 ,使用typedef 是一种更佳的选择,有时候,这也是唯一的选择.

    注意

    typedef 不会创建类型 , 而是为已有的类型创建一个新的名称.,如果将 word 作为 int 的别名,则 cout 将把 word 类型的值视为 int 类型

    基于范围的for循环

    简化了一种常见的循环任务: 对数组(或者容器类 ,如vector,和array)的每一个元素执行相同的操作.

    int  value[] = {1,2,3,4,5};
    
    for( int  i : value ){
    
    ​		cout << i << "  " ;
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 说明 i 最初表示数组value 的第一个元素,显示第一个元素后,不断执行循环,而 i 依次表示数组的其他元素.
    • 要修改数组的元素,需要使用不同的循环变量.
    for( int  &i : value ){
    
    ​		i=i+1;
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 符号&表明 i 是一个引用变量 , 这种类型让接下来的代码能够修改数组的内容.
    • 还可以结合使用范围的for循环和初始化列表
    for( int  i : {1,2,3,4,5} ){
    
    ​		cout << i << endl;
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    提示

    这样的循环,主要用于我的容器操作,简单吧,嘿嘿嘿和java风格的for循环一样.

    vector< string > name = {"wuxianfeng","llh","tfljsyhg"};
    for( string wxf : name ){
    	cout << wxf << "  " ;
    }
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    香港本地物流业发展情况
    什么是实时流引擎?
    2095. 删除链表的中间节点、19. 删除链表的倒数第 N 个结点、148. 排序链表
    【牛客-算法】NC38 螺旋矩阵
    通过python管理MySQL
    多线程03:线程传参详解
    力扣第1143题 最长公共子序列 c++ 动态规划 附Java代码 注释版
    【趣味随笔】农业机器人的种类与发展前景
    el-table 设置最大高度且能刚好撑满
    c/c++如何实现根据磁盘空间管理自己的日志文件案例
  • 原文地址:https://blog.csdn.net/qq_62989250/article/details/133722290