C ++ std :: map oder std :: set - fügt Duplikate effizient ein

Ich habe eine Menge Daten voller Duplikate und möchte diese Duplikate beseitigen. Sie wissen, z. [1, 1, 3, 5, 5, 5, 7] wird zu [1, 3, 5, 7].

Es sieht so aus, als ob ich entweder std :: map oder std :: set verwenden kann, um dies zu handhaben. Ich bin mir jedoch nicht sicher, ob es schneller ist, (a) einfach alle Werte in den Container einzufügen oder (b) zu überprüfen, ob sie bereits im Container vorhanden sind und nur einzufügen, wenn dies nicht der Fall ist - sind Einfügungen sehr effizient? Auch wenn es einen besseren Weg gibt ... können Sie einen schnellen Weg vorschlagen, dies zu tun?

Eine andere Frage: Wenn die Daten, die ich in ihnen speichere, nicht so trivial sind wie ganze Zahlen, sondern eine benutzerdefinierte Klasse, wie schafft es die std :: map, die Daten für den schnellen Zugriff über operator [ ]?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage