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