Вернемся к разработке дека.
Для дека нам потребуются конструкторы и деструктор. Минимально необходимое множество операций включает в себя операции добавления элемента в начало и конец дека, операции удаления первого и последнего элементов. Еще необходимы функция проверки, есть ли в контейнере элементы, и функция, выдающая количество элементов в контейнере. Обычно в состав методов включают и методы получения значений первого и последнего элементов контейнера. Рассмотрим более подробно операцию доступа к элементам контейнера.
Так как внутренняя структура элемента скрыта, поскольку определена в приватной части класса-дека, программа-клиент не сможет работать с элементами контейнера посредством указателей. Для перебора элементов контейнер должен обеспечить последовательный доступ к ним по-другому. Это можно сделать одним из двух способов:
? реализовать методы доступа непосредственно как методы контейнера;
? инкапсулировать все операции доступа в отдельный класс-итератор.
Второе решение предпочтительней хотя бы потому, что позволяет отделить интерфейс доступа от интерфейса контейнера. Это позволит в дальнейшем иметь один и тот же универсальный интерфейс доступа для разных типов контейнеров. Таким образом, итераторы играют очень важную роль при инкапсуляции информации контейнеров.
ВНИМАНИЕ
Именно таким образом реализованы итераторы в стандартной библиотеке шаблонов (STL). Это — одно из решений, оказавших существенное влияние на ее состав и структуру.
О раздельной трансляции см. главу 13.
Опубликовал Kest
November 05 2013 22:24:04 ·
0 Комментариев ·
3386 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.