Что наборы реализованы как в VB6?

Таким образом, набор в VB6 отслеживает ключ для каждого объекта, и можно искать объект его ключом.

Это означает, что наборы реализованы как своего рода хеш-таблица под капотом? Я понимаю, что у Вас может быть несколько объектов с тем же ключом в наборе, следовательно НЕКОТОРЫЙ ВИД.

Кто-либо знает, какую структуру данных типа набор VB6, как предполагается, представляет?

9
задан Mark Hurd 21 June 2012 в 18:04
поделиться

1 ответ

Насколько мне известно, Коллекция VBA реализована в виде связанного списка (используется целочисленными индексами и For Each ... Next) и хеш-таблицы (используется ключами). И, как сказала Рэйвен, у вас не может быть нескольких предметов с одним и тем же ключом.

Отредактировано:

@MarkJ: Я должен был процитировать это: Hardcore Visual Basic 2nd Ed. Брюс МакКинни, опубликовано Microsoft Press 1997 ISBN 1-57231-422-2

Цитаты:

Страница 191 - Класс Collection

«Проще говоря, класс Collection - это усовершенствованная версия C ++. класса CList [...]. Фактически, если вы улучшите CList до двусвязного списка и дадите ему несколько дополнительных функций (и, возможно, используете хеш-таблицу для поиска строковых ключей), у вас будет коллекция класс очень похож на тот, который предоставляется в Visual Basic.«

Страница 197 - Производительность

« И, собственно говоря, разработчики Visual Basic сказали мне, что Коллекции - это двусвязные списки (с дополнительными функциями для поддержки индексации) ».

Итак, МакКинни был больше журналистом, чем программистом, а не разработчиком. Однако он действительно работал в Microsoft и имел контакты в командах VB и VBA. Его объяснение работает на меня.

Между прочим, причина двусвязности list позволяет эффективно вставлять элементы как в начало, так и в конец коллекции.

8
ответ дан 4 December 2019 в 22:28
поделиться
Другие вопросы по тегам:

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