请问为什么test03用v.erase(++it);test04却用 v.erase(it+1)?
我想设计一个删除相邻元素中的后一个元素的功能
void test03()
{
//字符串
vector<char>v;
for(int i=0;i<10;i++)
{
v.push_back('a');
v.push_back('b');
v.push_back('b');
v.push_back('c');
if(i<5)
{
v.push_back('d');
}
}
for_each(v.begin(),v.end(),myPrint);cout<<endl;
vector<char>::iterator it=adjacent_find(v.begin(),v.end());
for( ;it!=v.end();it++)
{
it=adjacent_find(v.begin(),v.end());
if(it!=v.end())
{
v.erase(++it);
}
}
for_each(v.begin(),v.end(),myPrint);cout<<endl;
}
void test04()
{
//Person容器
vector<Person>v;
char nameSeed[3][2] = { "A","B","C" };
srand((unsigned int)time(NULL));
for (int i = 0; i < 3; i++)
{
int age = rand() % 100 + 1;
v.push_back(Person((const char*)nameSeed[i], age));
}
v.push_back(Person("C", 0));
for_each(v.begin(), v.end(),MyPrint());
vector<Person>::iterator it = adjacent_find(v.begin(), v.end());
for( ;it!=v.end();it++)
{
it=adjacent_find(v.begin(),v.end());
if(it!=v.end())
{
v.erase(it+1);
}
}
for_each(v.begin(),v.end(),MyPrint());cout<<endl;
}