Hola, necesito hacer una práctica para aprobar una asignatura de la carrera en la que me piden usar una función objeto. Yo tengo el código siguiente:
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 !!