Контейнер STL, который сохраняет порядок вставки, но не позволяет дублировать

Возможный дубликат:
std:: map, отслеживающий порядок вставки?

Я ищу контейнер STL, который сохраняет порядок вставки (без сортировки), но не позволяет дублировать. Есть ли это? если не какие-либо трюки, которые я могу использовать для настройки?

Ответы

Ответ 1

В настоящий момент такого контейнера нет, но вы можете создать свой собственный дешевым способом, удерживая std::vector и std::set в классе вместе.

Ответ 2

Я знаю, что вы специально запросили контейнер STL, но boost уже предоставляет контейнер multindex, который делает то, что вы хотите, с его ordered_unique. Я определенно стоит посмотреть вместо того, чтобы изобретать колесо.

Я просто хотел указать хорошую альтернативу.

Удачи.

Ответ 3

Не нужно повторно изобретать колесо, рассмотрите использование контейнера boost::multi_index. Затем вы можете определить различные индексы для вашего сердечного содержимого. Разница в производительности (если вы беспокоитесь) должна быть минимальной.

Ответ 4

Нет. Обнаружение дубликатов без сортировки или хеширования - довольно дорогостоящая операция.