Si va a cargar la lista una vez y luego la usa varias veces, usar std :: vector en lugar de std :: set probablemente sea más eficiente en el uso de la memoria y lo itere.
Si va a agregar y eliminar elementos continuamente, definitivamente debe usar std :: set.
Para uso general use std :: set porque es menos trabajo (construir el vector requiere que ordene y elimine duplicados después de que haya terminado de agregar todos los elementos), a menos que tenga una necesidad particular de eficiencia en poca memoria- uso o algún otro golpe de rendimiento que indique que se requiere un vector.
Use un conjunto y especifique su propio comparador. – DumbCoder
¿Sería [esta solución] (http://ideone.com/F0V42m) adecuada para usted? –