我有一个vec_A
将实例存储class A
为:vec_A.push_back(A());
我想在稍后阶段删除向量中的一些元素并且有两个问题:a)元素被删除为: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;
}