In C++ 11, si può ottenere una spinta efficienza utilizzando std::move
quando vogliamo spostare (distruttivamente copiare) valori in un contenitore:C++ "mossa da" contenitore
SomeExpensiveType x = /* ... */;
vec.push_back(std::move(x));
ma non posso trova qualcosa che va dall'altra parte Quello che voglio dire è qualcosa di simile:
SomeExpensiveType x = vec.back(); // copy!
vec.pop_back(); // argh
Questo è più frequente (la copia-pop) su adattatore di come stack
. Può esistere qualcosa del genere:
Per evitare una copia? E questo esiste già? Non ho trovato nulla di simile in n3000.
Ho la sensazione che mi manca qualcosa dolorosamente ovvio (come l'inutilità di esso), quindi sono pronto per "ru dum". : 3
Quali implicazioni ha il metodo di spostamento sulle variabili che non rientrano nell'ambito di applicazione? Ad esempio, se creo un oggetto, lo aggiungo a un contenitore membro, quindi l'oggetto esce dall'ambito ... Poiché non è stata eseguita alcuna copia, l'oggetto nel contenitore membro è ancora definito? – Polaris878
Sì, è stato spostato nel contenitore. Ti consigliamo di consultare i riferimenti di Google rvalue se non sei sicuro di come funzionano. – GManNickG
dolce grazie ... dovrò scavare in questo ancora un po 'di lol. Al valore nominale sembra che ciò potrebbe causare problemi. – Polaris878