以下代码有什么问题
typedef vector<int> IntArray;
IntArray array;
array.push_back(1);
array.push_back(2);
array.push_back(2);
array.push_back(3);
//删除 array 数组中所有的 2
for(IntArray::iterator itor=array.begin(); itor!=array.end();
++itor){
if(2==*itor) {
array.erase(itor);
}
}
答:for 循环中的 if 语句后的 array.erase(itor)语句,它将迭代器 itor 所指向的元素删除后会自动下移一位,故应在其后加上语句:itor–;