什么是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推断的类型不同。您可以在这12页的C ++中的类型推导说明中了解有关这些细微差别的更多信息-http: //thbecker.net/articles/auto_and_decltype/section_01.html