una puedo pegar mapa imagen guardar google earth cómo copio copiar como c++ stl map iterator copy

c++ - pegar - ¿Cómo puedo copiar un mapa en otro usando std:: copy?



cómo copiar y pegar un mapa de google maps a word (2)

Me gustaría copiar el contenido de un std :: map en otro. ¿Puedo usar std::copy para eso? Obviamente, el siguiente código no funcionará:

int main() { typedef std::map<int,double> Map; Map m1; m1[3] = 0.3; m1[5] = 0.5; Map m2; m2[1] = 0.1; std::copy(m1.begin(), m1.end(), m2.begin()); return 0; }

Esto no funcionará porque la copy llamará a operator* en m2.begin() para "desreferirlo" y le asignará un valor (todos los valores son de tipo std::pair<const int, double> ). Luego llamará al operator++ para moverse al siguiente espacio en m2 . Ambas operaciones no funcionan debido a la const const int y no hay espacio reservado para ningún elemento nuevo.

¿Hay alguna manera de hacer que funcione con std::copy ?

¡Gracias!


Necesita una variante de un iterador de inserción :

std::copy(m1.begin(), m1.end(), std::inserter(m2, m2.end()) );

inserter se define en <iterator> . Requiere un lugar para insertar (de ahí el m2.end() ) y devuelve un insert_iterator .


Puedes usar la respuesta de GMan, pero la pregunta es, ¿por qué quieres usar std::copy ? Debe utilizar la función miembro std::map<k, v>::insert lugar.

m2.insert(m1.begin(), m1.end());