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 называется объектом сравнения контейнера.

полный абзац слишком велик, чтобы размножаться здесь.


ссылка на cplusplus.com

В набор, ключ-это значение, которое должно быть уникальным.

Edit:

"элементы в ассоциативных контейнерах ссылаются на их ключ, а не на их абсолютное положение в контейнере."