Я пытаюсь окружить случаи, когда имеет смысл использовать карту (набор записей значения ключа). До сих пор у меня есть две категории (см. ниже). Принятие больше существует, каковы они?
Ограничьте каждый ответ на одну уникальную категорию и поднимите пример.
Значения свойств (как боб)
age -> 30
sex -> male
loc -> calgary
Присутствие, с O (1) производительность
peter -> 1
john -> 1
paul -> 1
Если ваш язык позволяет использовать ассоциативные массивы и указатели на функции/процедуры, вы можете использовать карты для построения чего-то похожего на объектно-ориентированное (см. Perl для классического примера).
См. здесь более подробное объяснение.
Карта - это один из способов представления графа . Ключи - это узлы в графе, а значение для конкретного узла N - это список всех узлов, к которым N подключается.
Разреженные структуры данных (например, разреженный массив или matrix):
0 -> value
1 -> value
100 -> value
105 -> value
Кроме того, я бы сказал, что приведенный вами пример «Присутствия» лучше реализовать с помощью структуры данных Set (например, HashSet в Java или .NET), поскольку «отображение» части карты действительно не требуется.
(Спасибо за ретэг, MatrixFrog.)
Словарь (сопоставление термина с определением)
"postulate" -> "demand or claim"
"consulate" -> "residence of a foreign official"
Также в этой категории
EADDRINUSE -> "Address in use."
EADDRNOTAVAIL -> "Address not available."
Как сказал Эрик Петрелье, ваш пример «присутствия» лучше подходит для Сета, чем для Карты.
Однако, если вы хотите отслеживать количество появлений вещей, используйте карту. Например, вы хотите знать, сколько раз данное слово встречается в документе:
псевдокод:
wordMap = map()
for word in document:
if wordMap.containsKey(word):
wordMap[word]++
else:
wordMap[word] = 1
, тогда, если я хочу знать, сколько раз слово «карта» встречается в документе, это будет просто wordMap ["map"]
Запоминание результатов функции (кэширование, буферизация, мемоизация )
10 -> 2
20 -> 7
30 -> zeroesIn(factorial(30))
Передача произвольного количества дополнительных параметров функции на языке, который их не поддерживает:
cars = findAvailableCars(make -> 'Toyota', model -> 'Prius', color -> 'green')