Когда мы должны использовать Indefinite_Hashed_Maps или Hashed_Maps - PullRequest
2 голосов
/ 27 февраля 2011

Я не понимаю, когда следует использовать Ada.Containers.Indefinite_Hashed_Maps или Hashed_Maps.

В чем разница между двумя универсальными пакетами?

1 Ответ

3 голосов
/ 27 февраля 2011

Пакет Ada.Containers.Indefinite_Hashed_Maps поддерживает типы, которые являются неопределенными для ключа и элемента. Неопределенный тип - это тип, который нуждается в дополнительном ограничении для объявления объекта. Пример: String, T'Class, тип с вариантной частью.

Реализация Hashed_Maps может хранить ключ и элемент в записях реализации карты (будь то таблица или дерево). Это наиболее эффективная реализация между двумя.

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

Хотя Indefinite_Hashed_Maps работает для конечных типов, лучше использовать Hashed_Maps, если ключи и типы элементов являются определенными.

...