[solucionado]Duda al insertar en un Map

Iniciado por josevc, 22 Mayo 2015, 19:09 PM

0 Miembros y 1 Visitante están viendo este tema.

josevc

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.

Peregring-lk

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.

josevc