C ++ std :: map o std :: set - inserta duplicados de manera eficiente
Tengo un montón de datos llenos de duplicados y quiero eliminar los duplicados. Ya sabes, por ejemplo [1, 1, 3, 5, 5, 5, 7] se convierte en [1, 3, 5, 7].
Parece que puedo usar std :: map o std :: set para manejar esto. Sin embargo, no estoy seguro de si es más rápido (a) simplemente insertar todos los valores en el contenedor, o (b) verificar si ya existen en el contenedor y solo insertar si no lo hacen; ¿son los inserts muy eficientes? Incluso si hay una forma mejor ... ¿puedes sugerir una forma rápida de hacer esto?
Otra pregunta: si los datos que estoy almacenando en ellos no son tan triviales como los enteros, y en cambio son una clase personalizada, ¿cómo se las arregla std :: map para almacenar (hash?) Los datos para un acceso rápido a través del operador [ ]?