Ich habe die Implementierung von UnaryOperation wie folgt
struct Converter
{
Converter( std::size_t value ):
value_( value ), i_( 0 )
{}
std::string operator() ( const std::string& word )
{
return ( value_ & ( 1 << i_++ ) ) ?
word:
std::string( word.size(), ' ' );
}
std::size_t value_;
std::size_t i_;
};
Und ich benutze es wie
std::vector v;
// initialization of v
std::transform( v.begin(), v.end(),
std::back_inserter( result ),
Converter( data ) );
Meine Frage kann ich mich auf meine Annahme verlassen, dass der Algorithmus meinen "Konverter-Operator ()" in der Reihenfolge aufruft, in der "Konverter::i_" der Anzahl der Elemente in "v" entspricht.
Bitte geben Sie die Norm an, falls ich mich nicht auf die Bestellung verlassen kann, oder stellen Sie eine stl-ähnliche Lösung zur Verfügung, die mögliche Probleme vermeidet, falls vorhanden.
Danke.
Bearbeiten:
Mir ist bekannt, dass in der Norm für den Transformationsalgorithmus "keine Nebeneffekte" gefordert werden. Ich kann in der gleichen Norm nicht finden, was genau "Nebenwirkung" für Funktoren ist.
Vielleicht gibt es eine gut aussehende, boostähnliche Lösung für diese Aufgabe?