Chcę wywalić wszystko z deque(początkowo uzywalem vectora ale zdecydowalem sie na deque, czy to dobrze?) jednocześnie wykonując pewną operacje dla każdego z nich.
Wymyśliłem dwa sposoby, i zastanawiam się który jest lepszy.
(pseudokody)
Pierwsza część jest taka sama dla obydwu sposobów:
std::deque<b2Body*> toDelete;
void setToDelete(b2Body* obj)
{
bool ok(true);
for(const b2Body* b: toDelete)
{
if(b == obj) // sprawdź czy wskaźnik już był dodany. inaczej będzie crash
{
ok = false;
}
}
if(ok) {
toDelete.push_back(obj);
}
}
Na drugą cześć, gdzie usuwam, mam dwa sposoby:
Sposób 1
while(toDelete.empty())
{
world.DestroyBody(toDelete.back());
toDelete.pop_back();
}
- Sposób 2**
for(const b2Body* b : toDelete)
{
world.DestroyBody(b);
}
toDelete.clear();
Który sposób jest lepszy i dlaczego? + czy dobrze zrobiłem używając deque zamiast std::vector?