csg*_*guy 2 c++ containers iterator stl
“虽然
iterator和const_iterator是在 范围内声明的类型vector,但不要求vector(或任何 STL 容器)具有任一类型的成员 -iterator并且const_iterator是接口的一部分,std::vector例如该成员的重载begin()返回这些类型,但没有说明这些函数如何获得它们返回的迭代器”此外,STL 容器必须具有:
“返回迭代器的开始和结束函数”
例如,上面指出iterator并且const_iterator不是 STL 容器的必需成员vector。我认为这意味着返回的类型.begin或.end将根据实现而有所不同。
所以我想知道为什么这没有问题,因为我看到很多人写出std::vector<someType>::iterator或std::vector<someType>::const_iterator在何处iterator和const_iterator被指定而不是使用auto例如:
for (std::vector<int>::iterator i = s.begin(); i != s.end(); i++)
{
}
Run Code Online (Sandbox Code Playgroud)
你读错了报价。人说
拥有任一类型的成员
不是
有任何一种
当他们说拥有任一类型的成员时,他们的意思是没有类型iterator或const_iterator类中的数据成员。
他们确实继续说
iterator并且const_iterator是界面的一部分std::vector
这是正确的,因为标准要求std::vector在其接口中显示这些类型。