次のvec_A
インスタンスを格納する がありますclass A
。vec_A.push_back(A());
後の段階でベクター内のいくつかの要素を削除したいのですが、2 つの質問がvec_A.erase(iterator)
あります。.
b) 条件if(num <5)
が num が特定の numberList の中にある場合であると仮定します。これを考えると、以下に示すよりもベクトルの要素を削除するより良い方法はありますか?
#include<vector>
#include<stdio.h>
#include<iostream>
class A {
public:
int getNumber();
A(int val);
~A(){};
private:
int num;
};
A::A(int val){
num = val;
};
int A::getNumber(){
return num;
};
int main(){
int i =0;
int num;
std::vector<A> vec_A;
std::vector<A>::iterator iter;
for ( i = 0; i < 10; i++){
vec_A.push_back(A(i));
}
iter = vec_A.begin();
while(iter != vec_A.end()){
std::cout << "\n --------------------------";
std::cout << "\n Size before erase =" << vec_A.size();
num = iter->getNumber() ;
std::cout << "\n num = "<<num;
if (num < 5){
vec_A.erase(iter);
}
else{
iter++;
}
std::cout << "\n size after erase =" << vec_A.size();
}
std::cout << "\nPress RETURN to continue...";
std::cin.get();
return 0;
}