Как показывает Angew, простой индексированный цикл может быть предпочтительнее, когда вам нужны индексы.
Однако можно получить индекс и от итератора:
auto a = vect.begin();
auto b = vect2.begin();
auto c = vect3.begin();
for (/*the loop conditions*/) {
auto index = a - vect.begin();
}
ItТакже возможно получить индекс прямого итератора, используя std::distance
, но было бы неразумно использовать его в цикле, поскольку сложность будет линейной для итераторов без произвольного доступа.
ВВ случае прямых итераторов (и общего кода, который должен поддерживать прямые итераторы), вы можете написать цикл, который имеет как переменную индекса, так и итераторы.
PS потенциально предпочтительно использовать предварительное увеличение с итераторами.Вероятно, имеет значение только в отладочной сборке.