Некоторые массивы содержат так мало заполненных элементов, что многие
строки являются полностью пустыми. В таком случае метки строк лучше хранить
в связанном списке, а не в массиве. Это позволяет программе полностью пропус-
кать пустые строки. На рис. 4.11 показан масс¥гё ЮОхЮО, который содержит всего
7 ненулевых записей.
Для работы с массивами данного типа необходимо немного изменить преды-
дущий код. Большая часть кода остается неизменной, и вы можете использовать
тот же самый тип данных TSparseCell для элементов массива. Но метки строки
не хранятся в массивах, а записываются в связанных списках. Список составлен из
записей TRowCell. Каждая из этих записей имеет указатель на следующую и мет-
ку начала для связанного списка строки.
Рис. 4.11. Сильно разреженный массив
Чтобы расположить элемент в массиве, нужно вначале просмотреть связан-
ный список ячеек TRowCell, пока не найдется требуемая строка. Затем просмат-
ривается связанный список строк, пока не отыщется нужный столбец.
Программа VSparse использует этот код для работы с сильно разреженным
массивом. С ее помощью можно устанавливать и извлекать элементы массива.
Значение DEFAULT_VALUE для данной программы равно пробелу, поэтому если
установить значение элемента в пустую строку, программа удалит его из массива.
Некоторые программы используют массивы, которые содержат очень мало
значащих элементов. Применение обычных массивов Delphi для хранения таких
пустых ячеек привело бы к существенной потере памяти. С помощью же треуголь-
ных, нерегулярных, разреженных и сильно разреженных массивов вы можете со-
здавать мощные представления массивов, которые требуют минимальных объемов
памяти.
Опубликовал Kest
October 18 2009 15:07:52 ·
0 Комментариев ·
8301 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.