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