std::vector<Bullet> v;
void usebullet(const Bullet& b)
{
// use the members of b, such as b.x, b.y
}
Вектор можно повторять разными способами:
for (size_t i=0; i<v.size(); ++i)
usebullet(v[i]); // or use v[i].x, v[i].y
for (std::vector<Bullet>::const_iterator it=v.begin(); it!=v.end(); ++it)
usebullet(*it); // or use it->x, it->y
c ++ 0x:
for (auto& bullet: v)
usebullet(bullet); // or use bullet.x, bullet.y
Для итерации в обратном порядке:
for (size_t i=v.size(); i>0; )
usebullet(v[--i]);
for (std::vector<Bullet>::const_reverse_iterator it=v.rbegin(); it!=v.rend(); ++it)
usebullet(*it);
Интересно, что диапазон , основанный на , не выполняет обратную итерацию.Вы можете использовать несколько адаптеров (включая, например, boost::range::adaptors::reversed
)