SoloCodigo
Programación General => C/C++ => Mensaje iniciado por: Sankara en Sábado 30 de Mayo de 2009, 18:08
-
Hola,
Mi problema es el siguiente,
por un lado tengo una clase que tiene como campo protegido un diccionario que guarda un string como clave y un entero
map<string, int> p;
ahora, en una función, necesito mostrar todos los datos de ese diccionario utilizando un copy (necesariamente tiene que ser un copy)
void miclase::ImprimeDatos(ostream & out) const
{
copy(p.begin(), p.end(), ostream_iterator<pair<string,int>>(out, "n"));
}
No compila esa línea del copy, para intentar solucionarlo, sobrecargué el operador de salida de miclase para que imprimiera pares, lo hice así:
ostream & operator<< (ostream out, const std::pair<string, int>& x){
return out << x.first<<x.second;}
Me sigue dando error
¿Alguien me ayuda?
-
Prueba usar otra funcion en vez de copy y la sobrecarga.
Yo usaria for_each
podria ser:
void pantallazo(pair &x){
out << x.first<<x.second;
}
void miclase::ImprimeDatos(ostream & out) const
{
for_each(p.begin(), p.end(),pantallazo);
}