推荐使用auto的场景:
1.用于STL的容器遍历。
代码如下:
#include <string>#include <iostream>
#include <map>
using namespace std;int main()
{map<int, string>mp;mp.insert(make_pair(1, "Tom"));mp.insert(make_pair(2, "Mike"));mp.insert(make_pair(3, "Jack"));for (auto it = mp.begin(); it != mp.end(); it++){cout << it->first << " " << it->second << endl;}return 0;
}
测试结果:
2.用于泛式编程。
在使用模板的时候,很多情况下我们不知道变量应该定义为什么类型,就可以将变量定义为auto。
代码如下:
#include <iostream>
#include <string>
using namespace std;class T1
{
public:static int get(){return 10;}
};class T2
{
public:static string get(){return "hello world";}
};template<typename T,typename P>//不用auto
void func01()
{P ret = T::get();cout << ret << endl;
}template<typename T>//用auto
void func()
{auto ret = T::get();cout << ret << endl;
}int main()
{func<T1>();func<T2>();cout << "------------------------------" << endl;func01<T1, int>();func01<T2, string>();return 0;
}
测试结果: