Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: josevc en 22 Mayo 2015, 19:09 pm



Título: [solucionado]Duda al insertar en un Map
Publicado por: josevc en 22 Mayo 2015, 19:09 pm
Hola,

Mi duda es la siguiente, supongamos que tengo esta función:

void Alumno::asocia(Asignatura& a, Grupo& g)
{
      AsigGrupo.insert(std::make_pair(&a,&g)); //Opción 1

      AsigGrupo[&a]=&g; //Opción 2
}

Teniendo previamente en la clase el map definido como:

typedef std::map<Asignatura*,Grupo*> AS;
AS AsigGrupo;

---------

¿Cuál serían las diferencias entre la "opción 1" y la "opción 2"? ¿Cuál es más conveniente usar?

Muchas gracais.


Título: Re: Duda al insertar en un Map
Publicado por: Peregring-lk en 22 Mayo 2015, 23:54 pm
En la opción 1, si la clave ya existe (si `&a` ya existe en el contenedor), la pareja no se inserta.

En la opción 2, si la clave ya existe, se modifica su valor por `&g`. Si no existe, se crea la clave `&a`, y se le inserta `&g` como valor.

En definitiva, no es una cuestión de conveniencia, sino según tu caso. Si "no quieres" modificar el valor en caso de que ya exista, opción 1. Si lo que quieres es crear/sobreescribir, opción 2.


Título: Re: Duda al insertar en un Map
Publicado por: josevc en 23 Mayo 2015, 20:34 pm
Muchísimas gracias ! ;-)