1 .. Algorithms/Transformation Algorithms//reverse_transform |130
14 , typename In = |unspecified|
16 struct reverse_transform
18 typedef |unspecified| type;
25 , typename In = |unspecified|
27 struct reverse_transform
29 typedef |unspecified| type;
36 ``reverse_transform`` is an |overloaded name|:
38 * ``reverse_transform<Seq,Op>`` returns a reversed, transformed copy of the
39 original sequence produced by applying an unary transformation ``Op`` to
40 every element in the |begin/end<Sequence>| range.
42 * ``reverse_transform<Seq1,Seq2,Op>`` returns a new sequence produced by applying a
43 binary transformation ``BinaryOp`` to a pair of elements (e\ :sub:`1`, e2\ :sub:`1`)
44 from the corresponding |begin/end<Seq1>| and |begin/end<Seq2>| ranges in reverse
47 |transformation algorithm disclaimer|
55 #include <boost/mpl/transform.hpp>
61 |Reversible Algorithm|
67 +-------------------+-----------------------------------+-----------------------------------+
68 | Parameter | Requirement | Description |
69 +===================+===================================+===================================+
70 | ``Sequence``, | |Forward Sequence| | Sequences to transform. |
71 | ``Seq1``, ``Seq2``| | |
72 +-------------------+-----------------------------------+-----------------------------------+
73 | ``Op``, | |Lambda Expression| | A transformation. |
75 +-------------------+-----------------------------------+-----------------------------------+
76 | ``In`` | |Inserter| | An inserter. |
77 +-------------------+-----------------------------------+-----------------------------------+
83 |Semantics disclaimer...| |Reversible Algorithm|.
85 For any |Forward Sequence|\ s ``s``, ``s1`` and ``s2``, |Lambda Expression|\ s ``op`` and ``op2``,
86 and an |Inserter| ``in``:
90 typedef reverse_transform<s,op,in>::type r;
100 typedef lambda<op>::type f;
101 typedef lambda<in::operation>::type in_op;
103 typedef reverse_fold<
106 , bind< in_op, _1, bind<f, _2> >
112 typedef transform<s1,s2,op,in>::type r;
122 typedef lambda<op2>::type f;
123 typedef lambda<in::operation>::type in_op;
125 typedef reverse_fold<
131 , bind<f, bind<first<>,_2>, bind<second<>,_2> >
139 Linear. Exactly ``size<s>::value`` / ``size<s1>::value`` applications of
140 ``op`` / ``op2`` and ``in::operation``.
148 typedef vector<char,short,int,long,float,double> types;
149 typedef vector<double*,float*,long*,int*,short*,char*> pointers;
150 typedef reverse_transform< types,boost::add_pointer<_1> >::type result;
152 BOOST_MPL_ASSERT(( equal<result,pointers> ));
158 |Transformation Algorithms|, |Reversible Algorithm|, |transform|, |reverse_copy|, |replace_if|
161 .. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams
162 Distributed under the Boost Software License, Version 1.0. (See accompanying
163 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)