しばらくの間、ベクトルの要素を処理したいと思います。これを最適化するために、処理時にアイテムを削除したくないので、最後にすべての処理済みアイテムを削除します。
vector<Item*>::iterator it;
for(it = items.begin(); it != items.end(); ++it)
{
DoSomething(*it);
if(TimeIsUp())
{
break;
}
}
items.erase(items.begin(), it);
消去を使用しても安全it == items.end()
ですか?文書化ではerase()
、[最初、最後]を消去すると言われており、これは安全なはずですが、確実にしたいと思います。
編集:
std :: vector.erase(begin()、begin())を使用しても安全ですか?