Операторов typedef по аналогии с классом-фиксатором, но я не стал этого делать, чтобы не засорять класс-адаптер техническими деталями.
Таким образом, итераторы и функторы позволили нам написать максимально обобщенную функцию-фильтр copy_i f (), которая способна обрабатывать любой последовательный контейнер, обладающий интерфейсом итераторов. Механизм функторов обеспечил нам уникальные возможности в плане передачи практически любой обрабатывающей функции в качестве параметра. Функции, подобные copyi f (), получили название обобщенные алгоритмы, и большое их количество реализовано в библиотеке STL.
Можно и дальше продолжать обобщение наших классов-адаптеров. Например, в [28] приводится значительно более обобщенный вариант класса-фиксатора Bi nder. Примеры еще более обобщенных классов-шаблонов для функторов можно найти в библиотеке Boost Вместо нескольких классов-адаптеров для различных типов указателей на методы реализован единый обобщающий механизм memf п. Понятно, что без классов-фиксаторов от этого механизма мало проку, поэтому в Boost реализован и значительно более мощный механизм bind. Это — целая библиотека взаимосвязанных друг с другом шаблонов1.
Помимо этого в библиотеке Boost можно найти и обобщенный шаблон-оболочку function2, обеспечивающий единообразную работу с функциями, методами и функторами.
7. Использовав в качестве образца класс TDeque, разработанный в главе 6, создать базовый класс TQueue, реализующий очередь. Элементом очереди является структура с полями: фамилия, количество членов семьи, год постановки в очередь. Реализовать класс-наследник, в котором определить операцию сортировки очереди по году постановки в очередь.
8. Использовав класс TQueue (см. предыдущее упражнение), реализовать класс-наследник Set, добавив операции объединения и пересечения.
9. Реализовать очередь из упражнения 7 как наследник, использовав класс TStack (см. листинг 6.9) в качестве образца для базового класса. Применить закрытое наследование.
Упражнения
10. Реализовать класс ListPerson (см. упражнение 10 в главе 4) как наследник от базового класса List, аналогичного TDeque.
11. Создать базовый класс Iterator для контейнера с элементами типа double. Реализовать класс-список, в котором итератор является наследником класса Iterator.
12. Определить класс Object с подсчетом объектов (см. листинг 4.23) как базовый, а класс Triad (см. упражнение 4) как наследник от него. Реализовать класс-наследник Date.
Опубликовал Kest
March 06 2014 10:58:48 ·
0 Комментариев ·
3155 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.