标签:
当对Vector进行erase()后,会导致原来的迭代器失效,要特别注意该问题。
int removeElement(vector<int>& nums, int val) { vector<int>::iterator itr = nums.begin(); while (itr != nums.end()) { if (*itr == val) itr = nums.erase(itr); else ++itr; } return nums.size(); }
注意:当调用erase后,会返回一个迭代器,该迭代器指向刚刚删除的元素的后一个元素。为了使得删除vector中的元素后的迭代器不失效,要将对迭代器赋值erase返回的迭代器。
标签:
原文地址:http://www.cnblogs.com/acode/p/4506847.html