另一个例子
假设我们有矢量:
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