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
广告