我有一組對象,我遍歷,但是我可能會在迭代期間決定現在需要刪除一個(或多個)這些對象。原位刪除元素的最佳方式
我的代碼去如下:
if(! m_Container.empty())
{
for( typedefedcontainer::iterator it = m_Container.begin();
it != m_Container.end();
++it )
{
if(! (SomeFunction((*it), "test", "TEST!", false)) )
{
// If function returns false, delete object.
m_Container.erase(it);
AsyncResponseStore::iterator it = m_asyncResponses.begin();
}
}
}
但當然,當我刪除的對象,我得到一個錯誤:「地圖/套迭代器不遞增的。」有人可以提出一個更好的方法來做到這一點?
請參見: What happens if you call erase() on a map element while iterating from begin to end?
爲什麼要測試容器的空白?如果爲空,for循環將永遠不會被輸入。 – 2008-12-09 16:56:43