Multiplizieren Sie Vektorelemente mit einem Skalarwert unter Verwendung von STL
Hallo ich möchte (multiplizieren,addieren,etc.) Vektor mit skalaren Wert zum Beispiel myv1 * 3
, ich weiß, ich kann eine Funktion mit einer forloop , aber gibt es eine Möglichkeit, dies zu tun, verwenden STL-Funktion? So etwas wie {Algorithmus.h :: transform-Funktion }?
InformationsquelleAutor der Frage Ismail Marmoush | 2010-10-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, mit
std::transform
:Vor C++17 könnten Sie
std::bind1st()
die veraltet in C++11.InformationsquelleAutor der Antwort Oliver Charlesworth
Wenn Sie mit einem
valarray
statt einervector
es hat eingebaute Operatoren für eine Skalare Multiplikation.Wenn Sie eine
vector
können Sie verwenden in der Tattransform
um die Arbeit zu tun:(vorausgesetzt, Sie haben etwas ähnliches wie Boost.Lambdadass Sie ganz einfach erstellen anonyme Funktion Objekte wie
_1 * 3
:-P)InformationsquelleAutor der Antwort Chris Jester-Young
Einfach : wenn Sie Ihre Daten in einer festen Größe array (float, Werte[N]), die Sie nutzen könnten SSE Interna um es schneller zu machen als es vermehren sich die sevreral float a a Zeit (4).
InformationsquelleAutor der Antwort dzada
Weiß ich das nicht, STL, wie Sie wollen, aber es ist etwas, das Sie anpassen können, wie unterschiedliche Bedürfnisse entstehen.
Unten ist eine Vorlage, die Sie verwenden können, um zu berechnen; 'func' wäre die Funktion, die Sie wollen, zu tun: multiplizieren, addieren, und so weiter; 'parm' ist der zweite parameter die 'func'. Sie können leicht erweitern diese um verschiedene func ist mit mehr parms der verschiedensten Arten.
Dies ist auch nicht ein 'safe' Funktion, die Sie tun müssen, Typ/Wert-Kontrolle etc. bevor Sie es verwenden.
InformationsquelleAutor der Antwort slashmais
Ich denke
for_each
ist sehr treffend, wenn Sie möchten, Durchlaufen ein Vektor und Bearbeiten jedes element nach irgendeinem Muster, in diesem Fall eine einfache lambda würde ausreichen:beachten Sie, dass jede variable, die Sie aufnehmen möchten, für die lambda-Funktion zu verwenden (sagen, dass Sie z.B. wollte multiplizieren mit einigen vordefinierten skalaren), geht in die Klammer als Referenz.
InformationsquelleAutor der Antwort storluffarn