Código C++:
Ver original
#include <iostream> #include <vector> #include <iterator> #include <algorithm> #include <map> using namespace std; map<string,int> d; void mifuncion (pair<string, string> t) { map<string, int>::iterator i; i = d.find(t.first); if (i != d.end()) // Existe clave d[t.first] += 1; else d.insert(i, pair<string,int>(t.first,1)); } int main () { multimap<string, string> multi; cout << "Vaya insertando las claves en la forma K1, K2" << endl; cout << "Presione ctrl+z para finalizar" << endl; string k1, k2; while (cin >> k1) { cin >> k2; multi.insert(pair<string, string>(k1, k2)); } cout << endl << "Elementos del multidiccionario: " << endl; for (multimap<string, string>::iterator it = multi.begin(); it != multi.end(); ++it) { cout << " [" << (*it).first << ", " << (*it).second << "]" << endl; } for_each (multi.begin(), multi.end(), mifuncion); cout << endl << "Elementos del diccionario: " << endl; for (map<string, int>::iterator it = d.begin(); it != d.end(); ++it) { cout << " [" << (*it).first << ", " << (*it).second << "]" << endl; } return 0; }
Cómo es entonces haciéndolo con una función objeto sin necesidad de declarar el diccionario global?
Muchas gracias !!