Каковы свойства уникального ассоциативного контейнера Hashmap по сравнению с ассоциативным контейнером Hashmap - PullRequest
0 голосов
/ 19 января 2012

ПРИМЕЧАНИЕ: Иногда ответы «как пользователь, вы не должны беспокоиться о деталях реализации», я отмечу здесь, что это вопрос, основанный на том, что я хочу узнать, как если бы я хотел его реализовать.

Согласно SGI :

Уникальный ассоциативный контейнер - это ассоциативный контейнер со свойством, согласно которому каждый ключ в контейнере уникален: нет двух элементов вУникальный Ассоциативный Контейнер имеет тот же ключ.

Это я так понимаю.Далее не объясняется, как данные хранятся в случае, когда ключи являются уникальными, а когда они не уникальны (я предполагаю, что причина, по которой это не объясняется, заключается в том, что она зависит от реализации).Итак, когда ключи уникальны, все ли ведра имеют размер 1 элемент?Я думаю не из-за коллизий, а если так, то как только номер корзины определен hasher, и если ключ уникален, как элемент хранится в самой корзине?

А как насчет того, когда ключи не являются уникальными?Как элементы хранятся и затем возвращаются в / из контейнеров?

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

1 Ответ

0 голосов
/ 19 января 2012

Ключи уникальны в уникальном ассоциативном контейнере. Как описано на странице, на которую вы ссылаетесь, если вы вставите какой-либо элемент e с ключом k, последующие вызовы insert () с тем же ключом k не будут вставлять новые элементы. Также обратите внимание на страницу, с которой вы связались, что метод count (), который возвращает количество элементов в UAC с данным ключом, всегда возвращает 0 или 1.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...