c++ - tutorial - solidity editor online
¿Puedo mover-asignar el contenido de un std:: map a otro std:: map? (2)
No creo que esto sea posible. Con otros contenedores, sugeriría el adaptador std::move_iterator
, pero eso no funciona porque la clave de un mapa es const.
En otras palabras, no puede mover elementos uno a uno de un mapa porque eso podría cambiar las claves, lo que un mapa no permite.
Y no hay manera de simplemente mover en masa de un mapa a otro. Las listas admiten el empalme, pero me temo que los árboles no.
¿Es posible insertar el contenido de un std :: map temp
en otro std :: map m
usando la semántica de movimientos, de modo que los valores del temporal no se copien y se reutilicen?
Digamos que uno tiene:
std::map<int, Data> temp;
std::map<int, Data> m;
Una forma de copiar valores de temp
en m
es:
m.insert(temp.begin(),temp.end());
¿Cómo puedo mover los elementos temp
a m
, en lugar de copiar?
No lo he intentado, pero creo que std::move_iterator debería ayudar aquí:
using it = std::map<int, Data>::iterator;
using mv = std::move_iterator <it>;
m.insert(mv(temp.begin()),mv(temp.end()));