C ++ std :: map lub std :: set - wydajne wstawianie duplikatów

Mam kilka danych pełnych duplikatów i chcę wyeliminować duplikaty. Wiesz, np. [1, 1, 3, 5, 5, 5, 7] staje się [1, 3, 5, 7].

Wygląda na to, że mogę użyć albo std :: map albo std :: set, aby to obsłużyć. Jednak nie jestem pewien, czy szybciej (a) po prostu wstawić wszystkie wartości do kontenera, czy (b) sprawdzić, czy już istnieją w kontenerze i wstawić tylko, jeśli nie - czy wkładki są bardzo wydajne? Nawet jeśli jest lepszy sposób ... czy możesz zasugerować szybki sposób?

Kolejne pytanie - jeśli dane, które w nich przechowuję, nie są tak trywialne jak liczby całkowite, a zamiast tego są klasą niestandardową, w jaki sposób std :: map potrafi prawidłowo przechowywać (hash?) Dane w celu szybkiego dostępu za pośrednictwem operatora [ ]?

questionAnswers(5)

yourAnswerToTheQuestion