parent
1804d99218
commit
475d32e940
|
@ -24,3 +24,20 @@ for(itr=list.begin(); itr!=list.end();)
|
|||
```
|
||||
|
||||
这里,end() 指向最后一个元素的下一个位置;调用 delete (*itr) 释放对象;调用 erase() 后,itr 会自动 +1。因此 delete 必须在 erase() 前调用,由于 delete 后,只是析构了对象而没有修改 list 中的成员,因此可以继续调用 list.erase(itr),释放 list 中对应的成员。
|
||||
|
||||
如果是有条件的删除,则:
|
||||
|
||||
```cpp
|
||||
vector<ClassA*>::iterator itr;
|
||||
|
||||
for(itr=list.begin(); itr!=list.end();)
|
||||
{
|
||||
if(...)
|
||||
{
|
||||
delete (*itr);
|
||||
list.erase(itr);
|
||||
}
|
||||
else
|
||||
itr++;
|
||||
}
|
||||
```
|
||||
|
|
Loading…
Reference in New Issue