vector循环删除的时候,erase(it)会返回下一个迭代器的地址,保险的做法是赋值给it 即 it= erase(it)
这是vector的内部机制所造成的,所以对vector进行erase的时候特别注意迭代器是否会失效!
map则可以直接erase(it++);
vector和map都不能将it++写在for循环中,而在循环体内erase(it)! 代码如下:void main(){ vector<int> v; v.push_back(1); v.push_back(2); v.push_back(4); v.push_back(3); v.pus
- 1
- 2
前往页