以下代码有什么问题

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–;