Библиотеки qt и stl. Иерархия объектов, коллекция, итераторы


Методы контейнерных классов


Download 0.9 Mb.
bet5/9
Sana31.01.2023
Hajmi0.9 Mb.
#1142465
TuriЛабораторная работа
1   2   3   4   5   6   7   8   9
Bog'liq
1671980777134 Лаб раб 4п

Методы контейнерных классов.
Для корректной работы контейнерных классов необходимо предусмотреть два метода (для вставки нового элемента и просмотра всех элементов группы).

Кроме этого, коллекция может содержать и другие методы, например, такие:

Итератор.
Итератор – это абстракция, которая ведет себя, как указатель с некоторыми ограничениями или без них, то есть, сохраняет все свойства своего прародителя. Указатель – это тоже итератор. В действительности, итераторы, в большинстве случаев, это объектные обертки указателей. Вот как примерно может выглядеть внутреннее устройство итератора (T* - указатель на необходимый класс (используется в шаблонах)):

Но итератор представляет собой более высокий уровень абстракции, чем указатель, поэтому утверждение, что итератор – это указатель в некоторых случаях может быть неверно. А вот обратное будет верно всегда.
Итераторы обеспечивают доступ к элементам в контейнере (коллекции).
Итераторы для конкретного класса коллекции определяются внутри класса этой коллекции.
Рассмотрим пример следующего итератора.
For all (всех элементов набора) { <действия> }
Такой цикл мог бы быть выполнен для всего набора, например, чтобы напечатать все элементы набора, или мог бы искать некоторый элемент, который удовлетворяет определенному условию, и в этом случае такой цикл может закончиться, как только будет найден требуемый элемент.
Будем рассматривать итераторы как специальные методы класса-коллекции, позволяющие выполнять некоторые действия для всех объектов, включенных в группу. Примером итератора является метод Show.
Удобно использовать итератор, который позволял бы выполнять над всеми элементами коллекции действия, заданные не одним из методов объекта, а произвольной функцией пользователя. Такой итератор можно реализовать, если эту функцию передавать ему через указатель на функцию.
Определим тип указателя на функцию следующим образом:

Download 0.9 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling