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]

Смотрите также

Рекомендации

  1. ^ "multimap ". Руководство программиста стандартной библиотеки шаблонов. Silicon Graphics International.
  2. ^ "hash_multimap <Ключ, HashFcn, EqualKey, Alloc>". Руководство программиста стандартной библиотеки шаблонов. Silicon Graphics International.
  3. ^ «Рабочий проект стандарта языка программирования C ++» (PDF). п. 7807.
  4. ^ "Multimap". Документы Quiver API.
  5. ^ «Интерфейс MultiMap». Commons Collections 3.2.2 API, Apache Commons.
  6. ^ «Класс MultiValueMap». Commons Collections 3.2.2 API, Apache Commons.
  7. ^ "Интерфейс Multimap ". Библиотека Guava 2.0. Архивировано из оригинал на 2013-01-15. Получено 2013-01-01.
  8. ^ "Scala.collection.mutable.MultiMap". Стабильный API Scala.