Spec-Zone .ru
спецификации, руководства, описания, API
|
ADC домой > Ссылочная библиотека> Ссылка> Дарвин> Разное пространство пользователя ссылка API
|
stl_function.h |
Это - внутренний заголовочный файл, включенный другими заголовками библиотеки. Вы не должны пытаться использовать его непосредственно.
оператор _Identity |
template <class _Tp> struct _Identity : public unary_function<_Tp,_Tp> { _Tp& operator()( _Tp& __x) const ;
@}
оператор equal_to |
// 20.3.3 comparisons /** @defgroup s20_3_3_comparisons Comparison Classes The library provides six wrapper functors for all the basic comparisons in C++, like @c <. @{ */ /// One of the @link s20_3_3_comparisons comparison functors@endlink. template <class _Tp> struct equal_to : public binary_function<_Tp, _Tp, bool> { bool operator()( const _Tp& __x, const _Tp& __y) const ;
@}
оператор logical_and |
// 20.3.4 logical operations /** @defgroup s20_3_4_logical Boolean Operations Classes Here are wrapper functors for Boolean operations: @c &&, @c ||, and @c !. @{ */ /// One of the @link s20_3_4_logical Boolean operations functors@endlink. template <class _Tp> struct logical_and : public binary_function<_Tp, _Tp, bool> { bool operator()( const _Tp& __x, const _Tp& __y) const ;
@}
оператор плюс |
// 20.3.2 arithmetic /** @defgroup s20_3_2_arithmetic Arithmetic Classes Because basic math often needs to be done during an algorithm, the library provides functors for those operations. See the documentation for @link s20_3_1_base the base classes@endlink for examples of their use. @{ */ /// One of the @link s20_3_2_arithmetic math functors@endlink. template <class _Tp> struct plus : public binary_function<_Tp, _Tp, _Tp> { _Tp operator()( const _Tp& __x, const _Tp& __y) const ;
@}
binary_function |
template <class _Arg1, class _Arg2, class _Result> struct binary_function { typedef _Arg1 first_argument_type; ///< the type of the first argument /// (no surprises here) typedef _Arg2 second_argument_type; ///< the type of the second argument typedef _Result result_type; ///< type of the return type };
Это - одна из основы функтора classes@endlink.
unary_function |
/** This is one of the @link s20_3_1_base functor base classes@endlink. */ template <class _Arg, class _Result> struct unary_function { typedef _Arg argument_type; ///< @c argument_type is the type of the /// argument (no surprises here) typedef _Result result_type; ///< @c result_type is the return type };
Функциональные объекты @defgroup s20_3_1_base Базовых классов Функтора или @e функторы, являются объектами с @c оператором () определенный и доступный. Они могут передаваться как параметры шаблонам алгоритма и использоваться вместо указателя функции. Не только получающаяся выразительность увеличенной библиотеки, но сгенерированный код может быть более эффективным, чем, что Вы могли бы записать вручную. Когда мы обращаемся к «функторам», тогда, обычно мы включаем указатели функции в описание также.
Часто, функторы только создаются, поскольку временные файлы передали вызовам алгоритма, вместо того, чтобы быть созданными как названные переменными.
Два примера, взятые от самого стандарта, следуют. Чтобы выполнить добавление элементом двух векторов, @c a и @c b содержащий @c дважды, и поместить результат в @c a, используют \code, преобразовывают (a.begin (), a.end (), b.begin (), a.begin (), плюс
Стандарт functiors получен из структур, названных @c unary_function и @c binary_function. Эти два класса содержат только определения типов, для помощи в универсальном (шаблон) программированию. Если Вы пишете свои собственные функторы, Вы могли бы рассмотреть выполнение того же.
@{
Последнее обновление: 20.06.2006