Какие коллекции реализованы как в VB6? - PullRequest
9 голосов
/ 31 марта 2010

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

Означает ли это, что коллекции реализованы как своего рода хеш-таблица под капотом? Я понимаю, что в коллекции может быть несколько предметов с одним и тем же ключом, следовательно, SOME SORT.

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

1 Ответ

8 голосов
/ 31 марта 2010

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

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

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

Котировки:

Страница 191 - Класс коллекции

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

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

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

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

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

...