Шаг 249.
Библиотека STL.
Объекты функций STL. Дополнительные композиционные адаптеры

    На этом шаге мы перечислим дополнительные композиционные адаптеры.

    Возможность объединения объектов функций играет важную роль в построении программного кода из готовых компонентов. Композиция позволяет конструировать очень сложные объекты функций из более простых частей. Конечно, было бы очень полезно, чтобы практически любое функциональное отношение представлялось в виде комбинации объектов функций. К сожалению, набор адаптеров в стандартной библиотеке C++ недостаточно широк. Например, не существует адаптера, который бы позволял объединить две унарные операции для формулировки критерия вида "одно и другое".

    Теоретически в библиотеке пригодились бы следующие композиционные адаптеры.

    К сожалению, эти композиционные адаптеры не были стандартизированы, поэтому для них не существуют стандартных имен. В реализации STL от SGI были определены имена для двух из перечисленных адаптеров, однако сообщество программистов еще не выбрало наиболее подходящие. В таблице 1 приведены имена, которые мы будем использовать далее.

Таблица 1. Возможные имена композиционных адаптеров
Функциональность В шагах В реализации STL от SGI
f(g(elem)) compose_f_gx compose1
f(g(elem1,elem2)) compose_f_gxy  
f(g(elem),h(elem)) compose_f_gx_hx compose2
f(g(elem1),h(elem2)) compose_f_gx_hy  

    В архиве библиотек C++ Boost (http://www.boost.org) можно найти как имена, которые должны использоваться в будущем, так и их полную реализацию. В следующих шагах описаны три наиболее часто использующиеся адаптера.

    Со следующего шага мы будем рассматривать унарные композиционные адаптеры.




Предыдущий шаг Содержание Следующий шаг