Il modo "normale" di eliminazione di un elemento da un vettore va in questo modo:std :: vector :: cancellare vs "swap e pop"
vec.erase(vec.begin() + index);
ma in teoria è più veloce solo per fare questo:
if (vec.size() >= 2)
{
std::swap(vec.begin() + index, vec.end() - 1);
vec.pop_back();
}
else
{
vec.clear();
}
C'è qualche motivo per non usare quest'ultimo?
È necessario il modo normale se è necessario conservare l'ordine. – zch
Se è necessario che la cancellazione sia veloce, è sempre possibile considerare l'utilizzo di un elenco collegato. – CompuChip
@CompuChip Finirà più lentamente del secondo esempio, tuttavia, e gli elenchi collegati sono fondamentalmente lenti per impostazione predefinita. – Veedrac