网上找到一些文章,分析得有点画蛇添足,用以下程序写了一下,测试通过。
具体的原因可能还得分析STL源代码。
#include <iostream>
#include <vector>#include <list>
#include <iterator>
using namespace std;
int main()
{
vector<int> in_vec;
in_vec.push_back(1);
in_vec.push_back(2);
in_vec.push_back(3);
in_vec.push_back(4);
in_vec.push_back(5);
in_vec.push_back(6);
vector<int>::iterator it;
for (it=in_vec.begin();it!=in_vec.end();++it)
{
if (*it==1||*it==2||*it==3||*it==4||*it==5||*it==6)
{
it=in_vec.erase(it);/
it--;
}
}
printf("\nVectorSize is %d\n", in_vec.size());
}