Я говорю, его переносимость через контейнеры.
Если вы пишете код с использованием векторов и используете индекс для итерации, то впоследствии код не может быть легко изменен на другие контейнеры.
typedef std::vector<int> myContainer; //only change here for std::list
for ( myContainer::iterator iter = actualContainer.begin();
iter != actualContainer.end();
++iter)
{}
В приведенном выше коде, если вы хотите перейти от вектора к списку, это очень легко возможно. Если вы использовали индекс, то это будет невозможно.
В противном случае, поскольку вектор использует итераторы произвольного доступа, он должен быть таким же. (индекс или итератор все в порядке)