Вы должны написать что-то вроде
size_t index = 0;
for (list<...>::const_iterator it = y.begin(); it != y.end(); ++it) {
// Do your actions based on `index`
++index;
}
и, ну, это иногда подходит.
С другой стороны, вы можете провести рефакторинг (перепланировка) вашего приложения, чтобы ваш цикл рисования не обязательно выполнял все эти x += something, y += something2, ...
, а действовал следующим образом:
foreach (Level* level, list) {
level->draw(backend);
}
Иногда это может быть сложно, но, на мой взгляд, такой подход может сэкономить вам много времени, если ваше приложение вырастет до чего-то «большого».