Когда имеет смысл использовать карту?

Я пытаюсь окружить случаи, когда имеет смысл использовать карту (набор записей значения ключа). До сих пор у меня есть две категории (см. ниже). Принятие больше существует, каковы они?

Ограничьте каждый ответ на одну уникальную категорию и поднимите пример.


Значения свойств (как боб)

age -> 30
sex -> male
loc -> calgary   

Присутствие, с O (1) производительность

peter -> 1
john  -> 1
paul  -> 1

6
задан Community 23 May 2017 в 12:11
поделиться

8 ответов

Если ваш язык позволяет использовать ассоциативные массивы и указатели на функции/процедуры, вы можете использовать карты для построения чего-то похожего на объектно-ориентированное (см. Perl для классического примера).

См. здесь более подробное объяснение.

1
ответ дан 9 December 2019 в 20:42
поделиться

Карта - это один из способов представления графа . Ключи - это узлы в графе, а значение для конкретного узла N - это список всех узлов, к которым N подключается.

0
ответ дан 9 December 2019 в 20:42
поделиться

Разреженные структуры данных (например, разреженный массив или matrix):

0 -> value
1 -> value
100 -> value
105 -> value

Кроме того, я бы сказал, что приведенный вами пример «Присутствия» лучше реализовать с помощью структуры данных Set (например, HashSet в Java или .NET), поскольку «отображение» части карты действительно не требуется.

5
ответ дан 9 December 2019 в 20:42
поделиться

(Спасибо за ретэг, MatrixFrog.)

Словарь (сопоставление термина с определением)

"postulate" -> "demand or claim"
"consulate" -> "residence of a foreign official"

Также в этой категории

EADDRINUSE    -> "Address in use." 
EADDRNOTAVAIL -> "Address not available."
0
ответ дан 9 December 2019 в 20:42
поделиться

Как сказал Эрик Петрелье, ваш пример «присутствия» лучше подходит для Сета, чем для Карты.

Однако, если вы хотите отслеживать количество появлений вещей, используйте карту. Например, вы хотите знать, сколько раз данное слово встречается в документе:

псевдокод:

wordMap = map()
for word in document:
    if wordMap.containsKey(word):
        wordMap[word]++
    else:
        wordMap[word] = 1

, тогда, если я хочу знать, сколько раз слово «карта» встречается в документе, это будет просто wordMap ["map"]

0
ответ дан 9 December 2019 в 20:42
поделиться

Запоминание результатов функции (кэширование, буферизация, мемоизация )

10 -> 2
20 -> 7
30 -> zeroesIn(factorial(30))
3
ответ дан 9 December 2019 в 20:42
поделиться

Conversion

peter -> pierre
john  -> jean
paul  -> paul
2
ответ дан 9 December 2019 в 20:42
поделиться

Передача произвольного количества дополнительных параметров функции на языке, который их не поддерживает:

cars = findAvailableCars(make -> 'Toyota', model -> 'Prius', color -> 'green')
1
ответ дан 9 December 2019 в 20:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: