mental mapa hacer formato dibujos cuento con como blanco c++ visual-c++ stl

c++ - hacer - formato de mapa mental en blanco en word



¿Cómo anexar los contenidos de un mapa a otro? (5)

Tengo dos mapas:

map< string, list < string > > map1; map< string, list < string > > map2;

He completado map1, ahora quiero copiar el contenido de map1 en map2. Así que simplemente hice:

Tengo alguna operación para que el mapa 1 se llene de

1. kiran, c:/pf/kiran.mdf, c:/pf/kiran.ldf 2. test, c:/pf/test.mdf, c:/pf/test.mdf

Y ahora tengo que llenar map2 con este contenido. Y de nuevo el mapa1 se llena de información.

1. temp, c:/pf/test.mdf, c:/pf/test.ldf 2. model, c:/model/model.mdf, c:/pf/model.ldf

Ahora tengo que adjuntar estos contenidos a map2. ¿Cómo hago esto?


Creo que quieres esto:

mapb.insert(mapa.begin(), mapa.end());

Creo que solo se saltará cualquier clave que ya exista en el objetivo. Si desea sobrescribir los valores de las claves duplicadas, tendría que iterar sobre los elementos, insertar cada uno, probar el par de resultados y reemplazar el valor.

Para el caso de "tres mapas", necesitarías:

mapc.insert(mapa.begin(), mapa.end()); mapc.insert(mapb.begin(), mapb.end());


Puedes hacerlo de varias maneras dependiendo de lo que quieras hacer:

  1. Utilice el constructor de copia:

    map< string, list < string > > map1; // fill in map1 map< string, list < string > > map2(map1);

  2. Use el operador de asignación como indique en la pregunta:

    map< string, list < string > > map1; map< string, list < string > > map2; // fill in map1 map2 = map1;

  3. Hazlo todo tú mismo manualmente:

    map< string, list < string > > map1; map< string, list < string > > map2; // fill in map1 for (map< string, list < string > >::iterator i = map1.begin(); i <= map1.end(); ++i) { map2[i.first()] = i.second(); }

Suena como (1) es lo que quieres.


Puedes usar el método de inserción del mapa. Por ejemplo:

std::map<int, int> map1; std::map<int, int> map2; map1[1] = 1; map2.insert(map1.begin(), map1.end()); map1.clear(); map1[2] =2; map2.insert(map1.begin(), map1.end());


Si desea insertar su mapa como lo define, esto es bueno:

payload.insert({ { "key1", "one" }, { "key2", 2 }, });


map<int,int> map1; map<int,int> map2; map1.insert(map2.begin(), map2.end());

Esto insertará en map1 los elementos desde el principio hasta el final de map2 . Este método es estándar para toda la estructura de datos STL, por lo que incluso podría hacer algo como

map<int,int> map1; vector<pair<int,int>> vector1; vector1.insert(map1.begin(), map1.end());

Además, los punteros también pueden funcionar como iteradores!

char str1[] = "Hello world"; string str2; str2.insert(str1, str1+strlen(str1));

Recomiendo encarecidamente estudiar la magia de la STL y los iteradores!