У меня есть куча данных, полная дубликатов, и я хочу удалить дубликаты. Вы знаете, например [1, 1, 3, 5, 5, 5, 7] становится [1, 3, 5, 7].
Похоже, я могу использовать либо std :: map, либо std :: set, чтобы справиться с этим. Однако я не уверен, быстрее ли (а) просто вставить все значения в контейнер или (б) проверить, существуют ли они уже в контейнере, и вставлять только в том случае, если их нет - вставки очень эффективны? Даже если есть способ получше ... не могли бы вы предложить быстрый способ сделать это?
Другой вопрос - если данные, которые я храню в них, не такие тривиальные, как целые числа, а вместо этого являются настраиваемым классом, как std :: map удается правильно хранить (хэшировать?) Данные для быстрого доступа с помощью оператора [ ]?
set
было бы более подходящим, поскольку вам не нужно связанное значение с каждым элементом. Я собираюсь предположить, что проверка и последующая вставка в набор будет медленнее, чем простая вставка, потому что в первом случае вам придется выполнять два ключевых поиска. - person GWW   schedule 10.10.2012