23/06/2010, 12:09
|
| | Fecha de Ingreso: febrero-2003 Ubicación: D.F.
Mensajes: 163
Antigüedad: 21 años, 9 meses Puntos: 22 | |
Respuesta: Como se utiliza Función Objeto? :( Ayuda porfavor !!!! Un poco de info en español, aunque en estos temas es más completa la información si la buscas en ingles.
Una pósible solución:
Código:
#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
#include <map>
#include <string>
using namespace std;
class MiFuncion{
map<string, int>& d;
public:
MiFuncion(map<string, int>& rd):d(rd){}
void operator()(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;
map<string,int> d;
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(d));
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;
}
La parte del código en la que debes poner atención está resaltada en rojo.
Saludos. |