Uso un vettore per archiviare i puntatori agli oggetti. In alcuni casi distruggo uno o più di questi oggetti (impostando gli spazi vettoriali su NULL
dopo ogni% chiamatadelete
), che sono selezionati esternamente:
for (int i=0; i<form->SelectListBox->Items->Count; i++) {
if (form->SelectListBox->Selected[i]) {
delete items[i];
items[i]=NULL;
}
}
Dopodiché, ho cancellato tutti i puntatori NULL
. Questo è quello che sto facendo e funziona:
ItemVector::iterator it;
while ((it=std::find(items.begin(), items.end(), (MyObjects*)NULL))!=items.end()) {
items.erase(it);
}
C'è un modo più idiomatico di "spazzare" un vettore di puntatori? [1]
[1] Come avrai intuito, sto usando C ++ Builder (versione 6) e il suo VCL e provo a migrare dall'utilizzo di TList
all'utilizzo di std::vector
come riduci i cast statici (la classe TList
fornisce un metodo Pack
.