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
它们没有,因为除了从有序的索引列表的开头到结尾循环之外,迭代器还可以用于其他目的.您需要单独跟踪索引并在每次传递时递增它:
list<TimeSliceLevel*>::iterator it;
int index;
for(it = levels.begin(), index = 0; it != levels.end(); ++it, ++index) {
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
260 次 |
| 最近记录: |