auto 关键字
auto关键字在 98/03 标准中与 static 关键字相反用于修饰所有局部变量即这个变量具有“自动”生命周期但是这个规定没有任何实际的用处。因而在 C 11 新标准中修改了其用法用于让编译器自己去推导一些变量的数据类型。如int a 1; auto b a;这里 b 的类型被声明为auto编译器会根据 a 的类型推导出变量 b 的类型也是 int。但是这样的写法在实际开发中实用价值不高所以auto一般会用于让编译器推导一些复杂的模板数据类型简化语法。如std::mapstd::string, std::string seasons; seasons[spring] 123; seasons[summer] 456; seasons[autumn] 789; seasons[winter] 101112; for (std::mapstd::string, std::string::iterator iter seasons.begin(); iter ! seasons.end(); iter) { std::cout iter-second std::endl; }上面代码中迭代器变量iter其类型是std::mapstd::string, std::string::iterator这一串的类型太长了在 C 11 语法中我们可以使用auto关键字达到同样的效果std::mapstd::string, std::string seasons; seasons[spring] 123; seasons[summer] 456; seasons[autumn] 789; seasons[winter] 101112; for (auto iter seasons.begin(); iter ! seasons.end(); iter) { std::cout iter-second std::endl; }是不是方便了很多