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