【发布时间】:2010-10-17 12:51:34
【问题描述】:
这对你们中的一些人来说可能看起来很无聊,但是以下两种对 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 用更少的代码实现了相同的效果。对容器的简单迭代是all 出现在任何源代码中的位置。所以,我倾向于选择方法 1,它似乎可以减少视觉混乱和代码大小。
PS:我知道迭代器可以做的不仅仅是一个简单的索引。但是,请保持回复/讨论的重点是对容器的简单迭代,如上所示。
【问题讨论】:
标签: c++ stl iterator containers