这对你们中的一些人来说可能看起来很无聊,但是以下两种在 STL 容器上的迭代方法中哪一种更好?为什么?
class Elem;
typedef vector<Elem> ElemVec;
ElemVec elemVec;
// Method 0
for (ElemVec::iterator i = elemVec.begin(); i != elemVec.end(); ++i)
{
Elem& e = *i;
// Do something
}
// Method 1
for (int i = 0; i < elemVec.size(); ++i)
{
Elem& e = elemVec.at(i);
// Do something
}
方法 0 看起来像更干净的 STL,但方法 1 用更少的代码实现了相同的效果。对容器的简单迭代在任何源代码中随处可见。所以,我倾向于选择方法 1,它似乎可以减少视觉混乱和代码大小。
PS:我知道迭代器可以做的不仅仅是一个简单的索引。但是,请让回复/讨论集中在容器上的简单迭代上,如上所示。