Следующий C++ код заполняет вектор с количеством объектов, а затем удаляет некоторые из этих объектов, но, похоже, она удаляет неправильные:Удаление элементов из вектора
vector<Photon> photons;
photons = source->emitPhotons(); // fills vector with 300 Photon objects
for (int i=0; i<photons.size(); i++) {
bool useless = false;
// process photon, set useless to true for some
// remove useless photons
if (useless) {
photons.erase(photons.begin()+i);
}
}
Могу ли я сделать это правильно ? Я думаю, что может возникнуть проблема photons.erase(photons.begin()+i);
?
'предупреждение: 'авто' изменит значение в C++ 0x; удалите его | ',' error: ISO C++ запрещает объявление 'it' без типа | ' – Ben
@Ben, я ленился,' auto' - это ключевое слово в C++ 11, что очень удобно, вам нужно измените 'auto' на тип, например в этом случае: 'vector :: iterator' –
Nim
+1 Это напоминает мне [этот запрос на растяжение] (https://github.com/TrinityCore/TrinityCore/pull/5015). Люди часто делают эту ошибку. – LihO