在C++中如何获得使用迭代器时的循环次数?

pol*_*lux 2 c++ counter iterator positioning

我正在编写一个应用程序,我绘制了几个图像,如下所示:

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;
}
Run Code Online (Sandbox Code Playgroud)

}

虽然这有点不正确.我需要将TimeSliceLevel*放在X上.当我有一个for(int i = 0; i < slices.size(); ++i)循环时,我可以使用x = i * width.虽然我正在使用迭代器,因为我多次被告知这是一个很好的编程:>我想知道迭代器是否有一个"索引"数字可以用来计算新的X位置?(所以这是一个关于使用迭代器的问题)

亲切的问候,Pollux

Mic*_*zek 7

它们没有,因为除了从有序的索引列表的开头到结尾循环之外,迭代器还可以用于其他目的.您需要单独跟踪索引并在每次传递时递增它:

list<TimeSliceLevel*>::iterator it;
int index;

for(it = levels.begin(), index = 0; it != levels.end(); ++it, ++index) {
    ...
}
Run Code Online (Sandbox Code Playgroud)