Multimap - Multimap
В Информатика, а Multimap (иногда также мультихеш или же multidict) является обобщением карта или ассоциативный массив абстрактный тип данных в котором более одного значения могут быть связаны с данным ключом и возвращены для него. И карта, и мульти-карта являются частными случаями контейнеры (например, см. C ++ Стандартная библиотека шаблонов контейнеры ). Часто мульти-карта реализуется как карта с списки или же наборы как значения карты.
Примеры
- В системе набора студентов, где студенты могут быть зарегистрированы в нескольких классах одновременно, может существовать связь для каждого набора студента на курс, где ключ - это идентификатор студента, а значение - идентификатор курса. Если студент зачислен на три курса, будут три ассоциации, содержащие один и тот же ключ.
- Указатель книги может сообщать о любом количестве ссылок для данного элемента указателя и, таким образом, может быть закодирован как мульти-карта от терминов указателя к любому количеству ссылок или страниц.
- Строки запроса может иметь несколько значений, связанных с одним полем. Обычно это происходит, когда веб-форма позволяет несколько флажки или выбор, который будет выбран в ответ на один элемент формы.
Языковая поддержка
C ++
C ++ с Стандартная библиотека шаблонов обеспечивает Multimap
контейнер для отсортированной мульти-карты с помощью самобалансирующееся двоичное дерево поиска,[1] и SGI расширение STL предоставляет hash_multimap
контейнер, который реализует мульти-карту с помощью хеш-таблица.[2]
Начиная с C ++ 11, Стандартная библиотека шаблонов обеспечивает unordered_multimap
для неупорядоченной мульти-карты.[3]
Дротик
Quiver предоставляет Multimap для Дротик.[4]
Ява
Apache Commons Коллекции предоставляет интерфейс MultiMap для Ява.[5] Он также предоставляет класс реализации MultiValueMap, который делает MultiMap из объекта Map и типа Collection.[6]
Google Guava предоставляет интерфейс Multimap и его реализации.[7]
Python
Python предоставляет collections.defaultdict
класс, который можно использовать для создания мультикарты. Пользователь может создать экземпляр класса как collection.defaultdict (список)
.
OCaml
OCaml стандартный библиотечный модуль Hashtbl
реализует хеш-таблицу, в которой можно хранить несколько значений для ключа.
Scala
В Scala API языка программирования также предоставляет Multimap и реализации.[8]
Смотрите также
- Абстрактный тип данных для концепции типа в целом
- Ассоциативный массив для более фундаментального абстрактного типа данных
- Multiset для случая, когда один и тот же предмет может появляться несколько раз
Рекомендации
- ^ "multimap
" . Руководство программиста стандартной библиотеки шаблонов. Silicon Graphics International. - ^ "hash_multimap <Ключ, HashFcn, EqualKey, Alloc>". Руководство программиста стандартной библиотеки шаблонов. Silicon Graphics International.
- ^ «Рабочий проект стандарта языка программирования C ++» (PDF). п. 7807.
- ^ "Multimap". Документы Quiver API.
- ^ «Интерфейс MultiMap». Commons Collections 3.2.2 API, Apache Commons.
- ^ «Класс MultiValueMap». Commons Collections 3.2.2 API, Apache Commons.
- ^ "Интерфейс Multimap
" . Библиотека Guava 2.0. Архивировано из оригинал на 2013-01-15. Получено 2013-01-01. - ^ "Scala.collection.mutable.MultiMap". Стабильный API Scala.