[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)

[C++11]自动类型推导auto

C++11新特性:3—— 汇总auto和decltype的区别

C++11新特性:3—— 汇总auto和decltype的区别