ВУЗ:
Составители:
Рубрика:
31
it1.Destroy;
it2.Destroy;
L.Destroy;
end.
Данный пример показывает, что реализация списка с внешним итератором
является более гибкой. Она не только ликвидирует «жирность» интерфейса класса
«Список», но и позволяет решать более сложные задачи, требующие использова-
ния нескольких указателей на элементы одного списка. К недостаткам этой реали-
зации отнесем необходимость явного вызова конструкторов и
деструкторов для
всех итераторов. Отметим также, что если список будет разрушен до разрушения
итератора, то последующее использование итератора приведет к аварийному за-
вершению программы.
3 Ассоциативные массивы
Ассоциативный массив – это АТД, к объектам которого можно обращаться
как к одномерному массиву, индекс которого может иметь произвольный тип (в
частности, строковый). Например, для ассоциативного массива zoo, хранящего
количество животных каждого вида в зоопарке, допустимо следующее обращение
к его элементу:
zoo['Крокодил']:=3;
Простейший способ хранения ассоциативных массивов – список пар (Ключ,
Значение),
где Ключ определяет индекс элемента, а Значение – значение элемента с
этим индексом. Так, ассоциативный массив zoo, представленный списком пар,
хранится в виде:
('Крокодил',3), ('Бегемот',2), ('Удав',1)
Когда мы обращаемся к какому-то элементу по индексу (например,
zoo['Удав']), то в списке пар ищется пара, у которой ключ совпадает с индек-
сом,
после чего возвращается второй элемент пары, представляющий собой зна-
чение, соответствующее этому ключу (для zoo['Удав'] возвращается 1). Если
при обращении к элементу ассоциативного массива пары с таким ключом нет (на-
пример, zoo['Воробей']), то в список пар добавляется пара с таким ключом, а
соответствующее значение полагается равным 0:
('Крокодил',3), ('Бегемот',2), ('Удав',1),
('Воробей',0)
Приведем реализацию ассоциативного массива на базе списка пар типа
(string,integer). Для этого будем считать, что список пар определен в мо-
дуле PairsSIList, для которого DataType описан следующим образом:
type
KeyType=string;
Страницы
- « первая
- ‹ предыдущая
- …
- 27
- 28
- 29
- 30
- 31
- …
- следующая ›
- последняя »