C++11提供了很多新特性,比如λ、auto、auto_ptr、for_each这些特性,让人感觉更接近脚本语言了。
接下来,将对每个特性做一些常用的方法的总结。
统一初始化
以往很多初始化语句,明显是啰嗦的,让人有一种把初始化写个模板方法的冲动,如下面代码:
1 |
|
现在,只需要一个大括号就解决了:
1 |
|
在进行STL的push等操作时,可以直接填写大括号,非常方便:
1 |
|
函数返回时,可以直接通过大括号创建返回对象
1 |
|
auto 类型
C++是编译型语言,所以栈上的变量类型一定是编译期确定的。
auto
是在预编译期,根据上下文自动确定类型,进行替换后再继续编译,所以并不是脚本语言那种动态类型。
虽然本质还是静态编译型语言,但是auto
可以在很多地方增加便利。
在定义一个复杂类型的iterator时,可以简化语句:
1 |
|
在for_each语句中也会用到auto
,在后面介绍。
※在使用auto
时要注意不要滥用,过多使用auto
会降低程序的可读性。
for each语句
for each是其他语言都有的语句:
1 |
|
这里auto后边的变量名,是引用类型,可以直接对vector内容进行赋值。