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

更新於:2020年2月11日

274 次瀏覽

開啟您的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.