У меня есть vec_A
, в котором хранятся экземпляры class A
как: vec_A.push_back(A());
Я хочу удалить некоторые элементы в векторе на более позднем этапе, и у меня есть два вопроса: а) Элемент удаляется как: vec_A.erase(iterator)
Есть ли какой-либо дополнительный код, который мне нужно добавить, чтобы убедиться, что нет утечки памяти? .
b) Предположим, что условие if(num <5)
имеет место, если num входит в определенный список номеров. Учитывая это, есть ли лучший способ удалить элементы вектора, чем то, что я иллюстрирую ниже?
#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;
}