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