c++11 允许声明一个变量或对象(object)而不需要指明其类型,只需说明它是auto。
1.如:
auto i = 42; //i是整型
double f();
auto d=f(); //d是双精度类型
2.如果类型很长或表达式很复杂时,auto特别有用,如:
vector<string> v:
auto pos = v.begin(); //pos has type vector<string>::iterator
//注意:如果v提供成员函数begin()和end(),则可以用v.begin();否则,用全局性的begin()和end(),如begin(v),end(v);
3.对Range-Based for 循环,如:
std::vector<double> vec;
for(auto& elem : vec) //注意:v提供成员函数begin()和end()
{
elem*=3; // 将vector vec的每个元素elem乘以3
}
//以上的for(xxx : yyy)可以等同于
for(auto _pos=begin(yyy), _end=end(yyy); _pos!=_end; ++_pos)
{
xxx = *_pos;
.....
}