Algorithmus, um Werte von zwei Bereichen hinzuzufügen und sie in einen dritten Bereich einzufügen

7

Ich habe mich nur gefragt, ob es etwas gibt (entweder in C ++ 11 oder Boost), das mir helfen könnte, so etwas zu tun:

%Vor%

das Ergebnis sollte natürlich {3, 7, 7} sein und wo anstelle von std :: plus irgendeine binary_function sein könnte.

Wenn also jemand eine Idee hat, lass es mich wissen.

    
Julien Lopez 07.06.2013, 12:49
quelle

4 Antworten

9

Sie können dazu die 5-Parameter-Überladung von std::transform verwenden. Dies erfordert einen binären Funktor, um Paare von Elementen zweier Bereiche zu bearbeiten:

%Vor%     
juanchopanza 07.06.2013, 12:51
quelle
12

Nur zum Spaß, ich werde auf eine Alternative zu std::vector und std::transform verweisen. Sie könnten stattdessen std::valarray verwenden.

%Vor%

Ergebnis:

%Vor%

Obwohl der Code für das Hinzufügen der Valarrays einfach und sauber ist, hat Valarray leider nie viel Popularität gewonnen. Als solche bleibt uns diese seltsame Situation, in der selbst Code wie dieser, der mir als sehr sauber, direkt und lesbar erscheint, immer noch als verschleiert gilt, einfach weil so wenige Menschen daran gewöhnt sind.

    
Jerry Coffin 07.06.2013 14:10
quelle
4

std :: transform ist das, wonach Sie suchen.

    
Asha 07.06.2013 12:51
quelle
4

std :: transform ( Ссылка ) ist, was Sie vielleicht suchen.

    
piwi 07.06.2013 12:51
quelle

Tags und Links