C++中的auto和decltype是什么?
Auto是C++11及以后版本中的一个关键字,用于自动类型推导。类型推断是指编程语言中表达式数据类型的自动检测。它是某些强静态类型语言中具有的特性。例如,如果要创建一个迭代器来迭代向量,只需为此目的使用auto。
示例
#include<iostream> #include<vector> using namespace std; int main() { vector<int> arr(10); for(auto it = arr.begin(); it != arr.end(); it ++) { cin >> *it; } return 0; }
在上面的程序中,它将自动获取类型std::vector<int>::iterator。
decltype类型说明符会产生指定表达式的类型。与根据赋值给变量的值推断类型的auto不同,decltype根据传递给它的表达式推断类型。decltype返回的值可以直接用于定义另一个变量。例如,可以使用decltype将上述代码编写如下:
示例
#include <iostream> #include <vector> using namespace std; int main() { vector<int> arr(10); for (decltype(arr.begin()) it = arr.begin(); it != arr.end(); it++) { cin >> *it; } return 0; }
请注意,decltype表示的类型可能与auto推断的类型不同。您可以阅读这篇关于C++类型推导的12页解释,以了解更多关于这些细微差别的信息:http://thbecker.net/articles/auto_and_decltype/section_01.html
广告