• Sábado 14 de Diciembre de 2024, 19:41

Autor Tema:  Error con map y copy  (Leído 811 veces)

Sankara

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Error con map y copy
« en: Sábado 30 de Mayo de 2009, 18:08 »
0
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?

seba7

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: Error con map y copy
« Respuesta #1 en: Jueves 4 de Junio de 2009, 02:17 »
0
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);

}