"multiset" и "multimap" - какой в ​​этом смысл? - PullRequest
30 голосов
/ 18 мая 2010

Как говорится в вопросе ... Я не понимаю, о multiset с / multimap с .

Итак, какова цель?

Ответы [ 7 ]

32 голосов
/ 18 мая 2010

Некоторые варианты использования:

MultiMap

  • С почтовым индексом в качестве ключа, все люди, имеющие этот почтовый индекс
  • При наличии идентификатора счета в качестве ключа все открытые ордера этого лица / счета
  • словарь с различными пояснениями

мультимножеством

по сути является картой с ключом и целым числом.

  • Инвентарь магазина, все товары имеют свой ключ и сумму по-прежнему доступно значение
  • накопленные данные о продажах магазина, каждый раз, когда продукт продается Идентификатор продукта get добавляется в мультимножество, тем самым увеличивая проданную сумму
2 голосов
/ 18 мая 2010

Мультимножество или мультикарта просто для ситуаций, когда может быть более одного конкретного элемента. Например, допустим, вы хотите создать индекс для книги. Вы просматриваете текст, выбрасываете все действительно распространенные бессмысленные слова («а», «an», «the» и т. Д.), А затем составляете список всего остального, а также место в книге, где каждый произошло.

Довольно много слов появятся на более чем одной странице, и в этом случае у вас будет несколько записей, сопоставляющих одно слово с разными страницами. Одним из способов справиться с этим будет мультикарта из слов в номера страниц.

2 голосов
/ 18 мая 2010

Один пример, когда мультикарта была бы полезна, если бы у вас была ситуация, когда большую часть времени ключи уникальны, но иногда это не так.

Например, если вы создавали класс кэша, который использовал хеш в качестве ключа. В большинстве случаев два разных объекта не будут иметь одинаковый хэш, поэтому ключи будут уникальными. Но возможно, что вы получите хеш-коллизии для разных объектов, поэтому вам нужно, чтобы мультикарта покрывала эту ситуацию.

Другим примером может быть любой неуникальный индекс (как в базе данных).

Что касается мультимножества - я думаю, что они были бы менее полезными. Единственное, о чем я могу думать, это использовать его как автоматически отсортированный список.

1 голос
/ 18 мая 2010

http://www.cplusplus.com/reference/stl/multimap/

Карты являются своего рода ассоциативными контейнеры для хранения элементов комбинацией значения ключа и сопоставленное значение, очень похоже на карту контейнеры, но позволяющие разные элементы, имеющие одинаковое значение ключа.

Это вид реестра, в котором элементы могут разделять ключ. Вы можете думать о компаниях и сотрудниках. Уличный адрес - это ключ, а сотрудники - ценности.

0 голосов
/ 12 января 2018

Наиболее важным преимуществом использования мультимножества над вектором / списком (или любым другим контейнером) является временная сложность операции поиска. средняя сложность по времени для мультимножества составляет O (logn), а unordered_multiset - O (1). То же самое верно для multimap и order_multimap.

0 голосов
/ 26 ноября 2011

Используйте мультикарту, где бы вы ни хотели использовать древовидную структуру.

0 голосов
/ 18 мая 2010

Вот что Википедия говорит об использовании:

  • В системе регистрации студентов, где студенты могут быть зачислены в несколько классов одновременно, там может быть ассоциацией для каждого зачисление студента на курс, где ключ - идентификатор студента и значение - идентификатор курса. Если студент зачислен на три курса, будет три ассоциации содержащий тот же ключ.
  • Указатель книги может содержать любое количество ссылок на данный указатель. термин, и, таким образом, может быть закодирован как мультикарта от индексации к любому количество эталонных мест
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...