我想在一段時間內處理矢量元素。爲了優化這一點,我不想在處理它時刪除一個項目,並在最後刪除所有處理的項目。使用std :: vector.erase(begin(),end())或std :: vector.erase(begin(),begin())是否安全?
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()
將清除[first,last),這應該是安全的,但我想確定。
編輯:
是否可以安全使用std :: vector.erase(開始(),()開始)?
我強烈建議不要使用普通指針的'VECTOR'。要麼使用專門設計用於容納指針的容器,要麼使用智能指針的「向量」。 (可能的例外是,如果向量不擁有它指向的對象。) –
@Cristy廢話。 –
@DavidSchwartz同意。 – johnathon