Supongamos que tengo el siguiente código:Mover con el vector :: push_back
#include <vector>
struct A {
int a;
int x;
};
int main() {
using namespace std;
A a1;
A a2;
vector<A> va;
va.push_back(a1);
va.push_back(move(a2));
}
Soy consciente de que los elementos de std :: vector se almacenan de forma contigua, a diferencia de un std :: lista. En el código anterior a2
se mueve pero ¿realmente no hay copia de a2
en el vector va
? ¿Cuál es la diferencia entre va.push_back(a2);
y ?
En su caso, 'std :: move'ing' a2' hace exactamente * nada *, ya que es un tipo plano (es decir, no tiene datos externos) y solo copiará. – Xeo
@cdhowie Gracias. corregido – ggg
Es posible que desee leer [¿Puede explicarme alguien la semántica de movimiento?] (Http://stackoverflow.com/questions/3106110/) para obtener una introducción a la semántica de movimientos. – fredoverflow