Prima C++11
Ho usato di swap-to-back per evitare spese generali copia completa, come:Utilizzando std :: spostare
vector<vector<Object> > Objects;
for(/* some range */)
{
vector<Object> v;
for(/* some other range */)
{
v.push_back(/* some object */);
}
Objects.push_back(vector<Object>());
Objects.back().swap(v);
}
Come posso usare std::move
spostare v
in Objects
per evitare copia completa in testa, invece di swap
?
So che ci sono un sacco di soluzioni alternative come array multipli o semplicemente inserendo direttamente in Objects.back()
, ma ho bisogno di un esempio di utilizzo di std::move
per capirlo.
Perché si fa a creare 'V a tutti? Perché non aggiungere semplicemente un vettore vuoto in Oggetti e poi 'Objects.back(). Push_back()' in esso? Questo rimuove ancora più overhead mentre è più semplice. – Ayjay
@Ayjay: leggi il resto della domanda – Dani