Я работаю на Aplication, где я рисую несколько изображений, как это:Как получить число циклов при использовании итератора в C++?
void TimeSlice::draw(float fX, float fY) {
list<TimeSliceLevel*>::iterator it = levels.begin();
float level_x = x;
float level_y = y;
while(it != levels.end()) {
(*it)->draw(level_x,level_y);
level_y += (*it)->height;
++it;
}
}
Хотя это немного неправильно. Мне нужно расположить TimeSliceLevel * на X. Когда у меня есть , я получаю цикл for(int i = 0; i < slices.size(); ++i)
, я могу использовать x = i * width
. Хотя я использую итератор, поскольку мне много раз говорили, что это хорошее программирование:> и мне интересно, имеет ли итератор число «индекс», которое я могу использовать для вычисления новой позиции X? (Так что это еще вопрос об использовании итераторов)
С наилучшими пожеланиями, Поллукс
Это действительно неэффективно для всех случаев, отличных от std :: vector или массивов. В любом случае индекс можно рассчитать как: std :: size_t index = std :: distance (levels.begin(), it); – Hippicoder