Я ищу контейнер STL, который сохраняет порядок вставки (без сортировки), но не позволяет дублировать. Есть ли это? если не какие-либо трюки, которые я могу использовать для настройки?
Ответ 1
В настоящий момент такого контейнера нет, но вы можете создать свой собственный дешевым способом, удерживая std::vector и std::set в классе вместе.
Ответ 2
Я знаю, что вы специально запросили контейнер STL, но boost уже предоставляет контейнер multindex, который делает то, что вы хотите, с его ordered_unique. Я определенно стоит посмотреть вместо того, чтобы изобретать колесо.
Я просто хотел указать хорошую альтернативу.
Удачи.
Ответ 3
Не нужно повторно изобретать колесо, рассмотрите использование контейнера boost::multi_index. Затем вы можете определить различные индексы для вашего сердечного содержимого. Разница в производительности (если вы беспокоитесь) должна быть минимальной.
Ответ 4
Нет. Обнаружение дубликатов без сортировки или хеширования - довольно дорогостоящая операция.