C ++ std :: map или std :: set - эффективно вставлять дубликаты

У меня есть куча данных, полная дубликатов, и я хочу удалить дубликаты. Вы знаете, например, [1, 1, 3, 5, 5, 5, 7] становится [1, 3, 5, 7].

Похоже, я могу использовать либо std :: map или std :: set для обработки этого. Однако я не уверен, быстрее ли (а) просто вставить все значения в контейнер или (б) проверить, существуют ли они уже в контейнере, и вставить, только если они не являются - являются ли вставки очень эффективными? Даже если есть лучший способ ... можете ли вы предложить быстрый способ сделать это?

Другой вопрос - если данные, которые я храню в них, не так тривиальны, как целые числа, а вместо этого являются пользовательским классом, как std :: map удается правильно хранить (хэш?) Данные для быстрого доступа через operator [ ]?

Ответы на вопрос(5)

Ваш ответ на вопрос