1. 类型别名的几种方式
2. C11标准下 基于范围的for循环
c++为类型创建别名的方式有两种
#define BYTE char
说明 : 预处理器将在编译程序的时候用char 替换所有的BYTE,从而使BYTE成为char的别名.
将 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 类型
简化了一种常见的循环任务: 对数组(或者容器类 ,如vector,和array)的每一个元素执行相同的操作.
int value[] = {1,2,3,4,5};
for( int i : value ){
cout << i << " " ;
}
for( int &i : value ){
i=i+1;
}
for( int i : {1,2,3,4,5} ){
cout << i << endl;
}
这样的循环,主要用于我的容器操作,简单吧,嘿嘿嘿和java风格的for循环一样.
vector< string > name = {"wuxianfeng","llh","tfljsyhg"};
for( string wxf : name ){
cout << wxf << " " ;
}