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