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());