方法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 意見:
張貼留言