C++ std:: set почему он ассоциативный?
почему std::set
определить как ассоциативный контейнер?
Я имею в виду std::map
является ассоциативным контейнером, потому что он сопоставляет значение с ключом, но почему это набор?
2 ответов
23.4.6.1 Обзор набора шаблонов классов [set .обзор]
A
set
удовлетворяет всем требованиям..] ассоциативный контейнер (23.2.4) [...]
потому что он удовлетворяет всем предварительным условиям существования ассоциативного контейнера, которые описаны в 23.2.4.
и не так просто, как "карты ключевое значение".
второй абзац даже подчеркивает это (или, скорее, подчеркивает, что это на самом деле map
и multimap
есть дополнительная функциональность над ассоциативными контейнерами):
23.2.4 ассоциативные контейнеры [ассоциативность.reqmts]
2) каждый ассоциативный контейнер параметризован на ключе и отношение заказа сравнивает которое наводит строгое слабое упорядочение (25.4) по элементам ключа. Кроме того, map и multimap связывают произвольный тип T с ключ. Объект типа Compare называется объектом сравнения контейнера.
полный абзац слишком велик, чтобы размножаться здесь.
В набор, ключ-это значение, которое должно быть уникальным.
Edit:
"элементы в ассоциативных контейнерах ссылаются на их ключ, а не на их абсолютное положение в контейнере."