вівторок, 15 березня 2011 р.

Функтори та функціональні адаптери STL

Функтором називається об'єкт, для якого перевизначений оператор () дужки.

Переваги:

  • Веде себе більш розумно, тому що має стан
  • Має певний тип і об'єкт можна передати функції шаблону
  • Зазвичай працює швидше вказівника на функцію.
Предикат - функція, або об'єкт функції, що повертає логічне значення. Хоча не кожна функція, що повертає логічну величину є предикатом по правилам STL.

Стандартні об'єкти функцій:

  • negate
  • plus
  • minus
  • multiplies
  • divides
  • modulus
  • (not)equal_to
  • less
  • greater
  • logical_not/and/or

Функціональний адаптер
- об'єкт, що дозволяє комбінувати об'єкти функцій один з одним або з спеціальними функціями. Теж оголошуються в файлі functional.

Стандартні функціональні адаптери:

  • bind1st(op, value)
  • bind2nd(op, value)
  • not1(op)
  • not2(op)
Детальний опис алгоритмів можна знайти в книзі Nicolai M.Josuttis The C++ Standard, Chapter 8. STL Function Objects.

Прихильники