补充 条件删除.

Signed-off-by: rick.chan <chenyang@autoai.com>
This commit is contained in:
rick.chan 2020-07-10 11:38:10 +08:00
parent 1804d99218
commit 475d32e940
1 changed files with 17 additions and 0 deletions

View File

@ -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 中对应的成员。 这里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++;
}
```