另一個例子
假設我們有向量:
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