SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: Sankara en Sábado 30 de Mayo de 2009, 18:08

Título: Error con map y copy
Publicado 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?
Título: Re: Error con map y copy
Publicado por: seba7 en Jueves 4 de Junio de 2009, 02:17
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);

}