Подтвердить что ты не робот

С++ std:: set почему он ассоциативен?

Почему std::set определяется как ассоциативный контейнер?

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

4b9b3361

Ответ 1

23.4.6.1 Обзор набора шаблонов классов [set.overview]

A set удовлетворяет всем требованиям [..] ассоциативной контейнер (23.2.4) [...]

Поскольку он удовлетворяет всем предпосылкам ассоциативного контейнера, которые описаны в 23.2.4., и не так просты, как "сопоставляет ключ к значению".

Второй абзац даже подчеркивает это (вернее, подчеркивает, что на самом деле map и multimap имеют дополнительную функциональность над ассоциативными контейнерами):

23.2.4 Ассоциативные контейнеры [associative.reqmts]

2) Каждый ассоциативный контейнер параметризуется на Key и порядок отношения Compare, который индуцирует строгую слабое упорядочение (25.4) на элементы Ключа. Кроме того, map и multimap связывают произвольный тип T с ключ. Объект типа Compare называется объектом сравнения контейнера.

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

Ответ 2

ссылка на cplusplus.com

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

Edit:

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