C++11 auto的应用

auto 自动类型推导

C++11之前和c语言 auto用来声明变量的存储类型(自动变量 栈区)
在编译期间 编译器能够根据变量或者表达式推导七类型
auto 与 const 时:
	普通数据在推导时const属性会被抛弃
	但是指针或者引用有const时 自动推导时不会抛弃

auto的限制:

	1.不能用于函数的参数列表
	2.auto不能作用于类的非静态成员
	3.auto 关键字不能定义数组
	4.auto不能作用于模板参数
auto的应用
	1.for循环
	for(auto& var:container)
	{


	}	
	为自己写的
	2.接收函数返回值  如果调用一个函数返回值类型可能有多个
	3.定义容器迭代器
	4.用于泛型编程

新式for循环
	底层原理是新式迭代器    只要对象支持迭代器的功能 可以用for循环
	for(类型)

auto用法

上面举的这个例子很简单,在真正编程的时候也不建议这样来使用auto,直接写出变量的类型更加清晰易懂。下面列举auto关键字的正确用法。

用于代替冗长复杂、变量使用范围专一的变量声明。
想象一下在没有auto的时候,我们操作标准库时经常需要这样:

#include<string>
#include<vector>
int main()
{
    std::vector<std::string> vs;
    for (std::vector<std::string>::iterator i = vs.begin(); i != vs.end(); i++)
    {
        //...
    }
}

这样看代码写代码实在烦得很。有人可能会说为何不直接使用using namespace std,这样代码可以短一点。

#include<string>
#include<vector>
int main()
{
    std::vector<std::string> vs;
    for (auto i = vs.begin(); i != vs.end(); i++)
    {
        //..
    }
}
上一篇:flex 简单总结


下一篇:不用再使用命令行打包成exe,有人写出了UI应用,可视化UI界面对python程序进行打包的方法!