What advantages are there in accessing vector elements using an iterator vs an index?
This question was asked by me recently regarding performance. You might want to take a look at the answers I got.
Check the following link: Iterators vs. indexes
The discussion was mainly about performance, which turned out to be platform dependant, with minor changes in each platform.
Why are iterators better than indexes?
However, if ignoring container types that do not support random access (list, set, etc.), iterators still offer
I say its portability across containers.
If you write a code using vectors and use index to iterate then the code cannot be changed to other containers easily later .
typedef std::vector<int> myContainer; //only change here for std::list
for ( myContainer::iterator iter = actualContainer.begin();
iter != actualContainer.end();
++iter)
{}
In the above code if you want to change from vector to list, it is very easily possible. If you had used the index then it won't be possible.
Otherwise since the vector uses random access iterators it should be the same. ( index or iterator anything is ok)
Modularity is the answer. Suppose you wrap your logic in a function call (a good practice). In that case making it receive iterator will make it generic, so that it can operate on a C style array (pointer), an C++ stl vector or anything really that behaves like an iterator container, such as a linked list for instance.