This may seem frivolous to some of you, but which of the following 2 methods of iteration over a STL container is better? Why?
Some more advantages of method 0:
The main disadvantage is that in many cases you scan two containers, in which case an index is cleaner than keeping two iterators.
A possibility not considered above: depending on the details of "Do something", one can have method 0 and method 1 simultaneously, you don't have to choose:
for (auto i = elemVec.begin(), ii = 0; ii < elemVec.size(); ++i, ++ii)
{
// Do something with either the iterator i or the index ii
}
This way, finding the index or accessing the corresponding member are both obtained with trivial complexity.
The following method of iteration over a standard library container is best.
Use c++11 (and beyond)'s range-based for-loop with the auto specifier:
// Method 2
for (auto& e: elemVec)
{
// Do something with e...
}
This is similar to your Method 0
but requires less typing, less maintenence and works with any container compatible with std::begin() and std::end(), including plain-old arrays.