Vector 删除元素,百度了半天还是解决不了!!!求助!!!
如题,vector删除,帮帮看看那里错了?
//SamePnt_I为 <int>vector ,里面为数字,1,2,3
//ResultVec[j].PntID、ResultVec[i].PntID也为 int型vector
//目的,从ResultVec[j].PntID里面删除SamePnt_I里面的元素,加入ResultVec[i].PntID里面
int SameI=SamePnt_I.size();
if(SameI>5)
{
for(int K=0;K<SameI;K++)
{
int tmpID=SamePnt_I[K];
ResultVec[i].PntID.push_back(tmpID); //ResultVec[i]里面添加,ResultVec[J]里面删除
for (vector<int>::iterator it = ResultVec[j].PntID.begin(); it != ResultVec[j].PntID.end();) //for循环中不要it++
{
if (*it == tmpID)
{
ResultVec[j].PntID.erase(it++);
}
else
{
it++;
}
}
}
}
ResultVec[j].PntID.erase(it++);
//当你做erase操作的时候迭代器已经失效了,需要重新申请的,
// it++ 是没有效果的!
if (*it == tmpID)
{
ResultVec[j].PntID.erase(it);
}
it++;
}
int SameI=SamePnt_I.size();
if(SameI>5)
{
for(int K=0;K<SameI;K++)
{
int tmpID=SamePnt_I[K];
ResultVec[i].PntID.push_back(tmpID); //ResultVec[i]里面添加,ResultVec[J]里面删除
for (vector<int>::iterator it = ResultVec[j].PntID.begin(); it != ResultVec[j].PntID.end();) //for循环中不要it++
{
if (*it == tmpID)
{
it = ResultVec[j].PntID.erase(it);
}
else
{
it++;
}
}
}
}