另一個例子

假設我們有向量:

std::vector<int> intVector;

我們想要為這個向量宣告一個迭代器。一個明顯的想法是使用 auto。但是,可能需要宣告一個迭代器變數(而不是將其分配給任何東西)。我們會這樣做:

vector<int>::iterator iter;

然而,使用 decltype 它變得容易且不易出錯(如果 intVector 的型別改變)。

decltype(intVector)::iterator iter;

或者:

decltype(intVector.begin()) iter;

在第二個例子中,begin 的返回型別用於確定實際型別,即 vector<int>::iterator

如果我們需要 const_iterator,我們只需要使用 cbegin

decltype(intVector.cbegin()) iter; // vector<int>::const_iterator