En C++ 11, se puede obtener un impulso de la eficiencia mediante el uso de std::move
cuando queremos mover (destructivamente copiar) los valores en un recipiente:C++ "paso de" contenedor
SomeExpensiveType x = /* ... */;
vec.push_back(std::move(x));
pero no puedo encontrar algo yendo para el otro lado. Lo que quiero decir es algo como esto:
SomeExpensiveType x = vec.back(); // copy!
vec.pop_back(); // argh
Esto es más frecuente (la copia-pop) el adaptador de como stack
. ¿Podría algo como esto existir:
Para evitar una copia? Y esto ya existe? No pude encontrar nada como eso en n3000.
Tengo la sensación de que me falta algo dolorosamente obvio (como lo innecesario), así que estoy preparado para "ru dum". : 3
¿Qué implicaciones tiene el método de movimiento en las variables que están fuera del alcance? Por ejemplo, si creo un objeto, lo agrego a un contenedor miembro, entonces el objeto sale del alcance ... Como no se realizó ninguna copia, ¿el objeto en el contenedor miembro aún está definido? – Polaris878
Sí, se movió al contenedor. Si no está seguro de cómo funcionan, querrá google rvalue references. – GManNickG
gracias dulce ... tendré que profundizar en esto un poco más jajaja. A primera vista, parece que esto causaría problemas. – Polaris878