que programacion libreria funciona ejemplo diccionarios como c++ printing map for-loop pair

programacion - que es un map en c++



C++ imprime valores de mapa (2)

Entonces tengo un mapa como este:

map<string, pair<string,string> > myMap;

Y he insertado algunos datos en mi mapa usando:

myMap.insert(make_pair(first_name, make_pair(middle_name, last_name)));

Mi pregunta es, ¿cómo imprimo todos los datos en mi mapa? Por favor proporcione un ejemplo para mi referencia.


Si su compilador es compatible (al menos con parte de) C ++ 11, podría hacer algo como:

for (auto& t : myMap) std::cout << t.first << " " << t.second.first << " " << t.second.second << "/n";

Para C ++ 03 usaría std::copy con un operador de inserción en su lugar:

typedef std::pair<string, std::pair<string, string> > T; std::ostream &operator<<(std::ostream &os, T const &t) { return os << t.first << " " << t.second.first << " " << t.second.second; } // ... std:copy(myMap.begin(), myMap.end(), std::ostream_iterator<T>(std::cout, "/n"));


for(map<string, pair<string,string> >::const_iterator it = myMap.begin(); it != myMap.end(); ++it) { std::cout << it->first << " " << it->second.first << " " << it->second.second << "/n"; }

En C ++ 11, no es necesario que deletree map<string, pair<string,string> >::const_iterator . Puedes usar auto

for(auto it = myMap.cbegin(); it != myMap.cend(); ++it) { std::cout << it->first << " " << it->second.first << " " << it->second.second << "/n"; }

Tenga en cuenta el uso de las cbegin() y cend() .

Más fácil aún, puede usar el bucle for basado en rango:

for(auto elem : myMap) { std::cout << elem.first << " " << elem.second.first << " " << elem.second.second << "/n"; }