C++17新特性 类型推导
在传统C和C++中,参数的类型都必须明确定义,这其实对我们快速进行编码没有任何帮助,尤 其是当我们面对一大堆复杂的模板类型时,必须明确的指出变量的类型才能进行后续的编码,这不仅拖 慢我们的开发效率,也让代码变得又臭又长。
C++11引入了auto和decltype这两个关键字实现了类型推导,让编译器来操心变量的类型。这 使得C++也具有了和其他现代编程语言一样,某种意义上提供了无需操心变量类型的使用习惯。
/在C++11之前,由于cbegin()将返回vector<int>::const_iterator类型,因此iter页应该是vector<int>::const_iterator类型
//for (vector<int>::const_iterator iter = v.cbegin(); iter != v.cend(); ++iter) {// cout << *iter << endl;
//}//在C++11之后,使用auto进行类型推导
#include <iostream>
#include <vector>
#include <initializer_list>class MagicFoo{public:std::vector<int> vec;MagicFoo(std::initializer_list<int> init) {for (auto it = list.begin(); it != list.end(); ++it) {vec.push_back(*it);}}
};int main() {MagicFoo foo = {1, 2, 3, 4, 5};// 使用auto进行类型推导for (auto iter = foo.vec.cbegin(); iter != foo.vec.cend(); ++iter) {std::cout << *iter << std::endl;}return 0;
}