C++11作用域内枚举enum

在C++11之前的枚举enum,是没有办法两个枚举enum内有相同枚举值的。如果还不知道C++中枚举enum是什么,可以看这篇:枚举enum如:苹果和桔子都有大,中,小。写个代码来说明下:enum apple{big, medium, small, special};
enum orange{big, medium, small};以上代码编译不会通过的。之前我们可能会改成用size来做枚举,但apple枚举又多了一个枚举值,这样在C++11之前版本中就不会很好处理。

C++11新增模板类array原因

vector类的功能比数组强大,但效率没有数组高(vector对象分配在自由存储区或堆中)。效率来讲内置数组是最高的,但是会不安全不方便,如下标越界、两个数组赋值要用for循环一个个赋值。以上两点,C++11中就新增了array类模板,来解决内置数组不安全不方便,相比vector提高效率(array对象分配在栈中)。

C++11新增数组初始化方式

C++11之前数组使用方法可以参考这篇:数组使用注意点今天这篇主要讲C++11数组新增加初始化方式。
1.C++11数组初始化时可省略等号
2.C++11数组初始化时大括号内可以不包含任何东西
3.C++11数组初始化时不能缩窄转换。缩窄转换:就是宽类型转窄类型,例如double转int

C++11语言auto关键字作用

C++11中对关键字auto进行了重新定义,可以让编译器根据初始值类型自动推断变量的类型。auto a? = 0;? ?//推断出a类型为int
atuo b = 0.0; ?//推断出b类型doublu
auto c = ‘A’; ?//推断出c类型是char如果不知道为什么能自动推断出来可以看下:常量类型? ? ?和? ?C++常量类型?获取上面写的都是推断基本类型,当然C++11 auto关键字并非只样简单的运用,更多的是为了自定义类型推断。相信很多人在写迭代器时会很头痛,太长了。先个vector类型的迭代器。