对于一些人来说,这可能看起来是琐碎的问题,但以下两种遍历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:我知道迭代器可以做比简单的索引更多的事情。但请保持回复/讨论集中在像上面展示的简单容器迭代上。