[C++11]推荐使用auto的场景
Posted Wecccccccc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[C++11]推荐使用auto的场景相关的知识,希望对你有一定的参考价值。
推荐使用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;
}
测试结果:
以上是关于[C++11]推荐使用auto的场景的主要内容,如果未能解决你的问题,请参考以下文章
喵呜:C++基础系列:auto关键字(C++11)基于范围的for循环(C++11)指针空值nullptr(C++11)
喵呜:C++基础系列:auto关键字(C++11)基于范围的for循环(C++11)指针空值nullptr(C++11)
喵呜:C++基础系列:auto关键字(C++11)基于范围的for循环(C++11)指针空值nullptr(C++11)