diff --git a/Software/Development/Library/Cpp_Standard_Library/vector_补充说明.md b/Software/Development/Library/Cpp_Standard_Library/vector_补充说明.md index c39e84e..966d2bd 100644 --- a/Software/Development/Library/Cpp_Standard_Library/vector_补充说明.md +++ b/Software/Development/Library/Cpp_Standard_Library/vector_补充说明.md @@ -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::iterator itr; + +for(itr=list.begin(); itr!=list.end();) +{ + if(...) + { + delete (*itr); + list.erase(itr); + } + else + itr++; +} +```