25 lines
1.3 KiB
ReStructuredText
25 lines
1.3 KiB
ReStructuredText
|
|
According to their name, MPL's *transformation*, or *sequence-building
|
|
algorithms* provide the tools for building new sequences from the existing
|
|
ones by performing some kind of transformation. A typical transformation
|
|
alogrithm takes one or more input sequences and a transformation
|
|
metafunction/predicate, and returns a new sequence built according to the
|
|
algorithm's semantics through the means of its |Inserter| argument, which
|
|
plays a role similar to the role of run-time |Output Iterator|.
|
|
|
|
.. Say something about optionality of Inserters/their default behavior
|
|
|
|
Every transformation algorithm is a |Reversible Algorithm|, providing
|
|
an accordingly named ``reverse_`` counterpart carrying the transformation
|
|
in the reverse order. Thus, all sequence-building algorithms come in pairs,
|
|
for instance ``replace`` / ``reverse_replace``. In presence of variability of
|
|
the output sequence's properties such as front or backward extensibility,
|
|
the existence of the bidirectional algorithms allows for the most efficient
|
|
way to perform the required transformation.
|
|
|
|
.. |Transformation Algorithms| replace:: `Transformation Algorithms`_
|
|
|
|
.. |transformation algorithm| replace:: `transformation algorithm`_
|
|
.. _transformation algorithm: `Transformation Algorithms`_
|
|
.. |transformation algorithms| replace:: `transformation algorithms`_
|