我正在初始化,並插入到一個列表,像這樣刪除並擦除一個iter?
_ARRAY_DETAIL* pAR = new _ARRAY_DETAIL;
pAR->sVar1 = 1;
pAR->nVar2 = 2;
m_SomeList.push_back(pAR);
我試圖找到幷包含值1的列表中刪除所有,然後刪除,我們用new
創建的指針,是我的榜樣下面以一個好的,正確的高效方式進行操作?
while(Iter != m_SomeList.end());
{
if((*Iter)->sVar1 == 1)
{
_ARRAY_DETAIL* pAR = *Iter;
Iter = m_SomeList.erase(Iter);
delete pAR; pAR = NULL;
}
Iter++;
}
'list :: remove_if'比自定義循環更好。儘管存儲原始指針會使這種用法複雜化。 –