方法1:
vector<AA>::iterator ite;
for ( ite = vaa.begin(); ite != vaa.end(); )
{
if (find(intList.begin(), intList.end(),ite->n) != intList.end())
vaa.erase(++ite);
else
++ite;
}
方法2:
vector<AA>::iterator ite = vaa.begin();
for (ite = vaa.begin(); ite != vaa.end(); ++ite )
{
if (find(intList.begin(), intList.end(),ite->n) != intList.end())
vaa.erase(ite);
}
當vector內是物件或是struct時,以上的方法可能會有錯誤,這是因為當
erase時,iterator就會失效,因此可以用下面的方式解決
方法3:
struct AA{
int a;
int b;
int (int x, y){a=x;b=y;}
}
vector<struct AA>::iterator ite = vaa.begin();
for (ite = vaa.begin(); ite != vaa.end(); ++ite )
{
if (判斷式)
ite = vaa.erase(ite);
else
++ite;
}
簡單的方法大致如上,其實有其他更好的方法,不過有些複雜像是if_find搭
配#include







0 意見:
張貼留言