6 Stimmen

C++ std::transform Seiteneffekt

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?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X