Какова сложность поиска / времени доступа в словаре VBA? - PullRequest
0 голосов
/ 25 марта 2020

Какова временная сложность поиска или доступа к словарю VBA? Я не мог найти документацию по нему.

РЕДАКТИРОВАТЬ - Некоторые комментарии от здесь предположили, что это O (1), что я считаю верным, однако в нем нет ссылок на него в Интернете.

Set dict = New Scripting.Dictionary
dict("Apples") = 50
dict("Oranges") = 100
dict("Bananas") = 30

'lookup
dict.Exists("Apples")

'access
dict("Oranges")

1 Ответ

0 голосов
/ 26 марта 2020

Согласно документации Microsoft ,

Объект Dictionary является эквивалентом PERL ассоциативного массива.

А согласно perl документации , associative arrays называются hashes:

Хэши (ассоциативные массивы)

Наконец, в соответствии с этой perl документацией говорится, что:

Если вы оцениваете ha sh в скалярном контексте, он возвращает ложное значение, если ха sh пусто. Если есть какие-либо пары ключ / значение, он возвращает истинное значение. Более точное определение зависит от версии.

До Perl 5.25 возвращаемое значение представляло собой строку, состоящую из числа использованных сегментов и количества выделенных сегментов, разделенных sla sh. Это очень полезно только для того, чтобы выяснить, плохо ли работает алгоритм внутреннего хеширования Perl в вашем наборе данных. Например, вы вставляете 10 000 вещей в га sh, но оценка% HA SH в скалярном контексте показывает «1/16», что означает, что было затронуто только одно из шестнадцати сегментов, и предположительно содержит все 10 000 ваших Предметы. Этого не должно быть.

По состоянию на Perl 5.25 возвращение было изменено на количество ключей в га sh. Если вам нужен доступ к старому поведению, вы можете вместо этого использовать Ha sh :: Util :: bucket_ratio ().

, что подразумевает амортизацию O (1) для поиска.

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