Bestimmen der Summe der Elemente in einem C-Vektor
In C erfordert das Ermitteln der Summe der Elemente in einem std::vector eine Schleife oder Standardalgorithmus zum Durchlaufen und Akkumulieren der Werte. Die Wahl der Methode hängt von der verwendeten C-Version ab und jeder Ansatz bietet seine eigenen Vorteile.
C 03
Klassisch for-Schleife: Verwenden einer herkömmlichen for-Schleife, um die Elemente zu durchlaufen und eine laufende Summe zu erhöhen Variable.
int sum_of_elems = 0; for (auto it = vector.begin(); it != vector.end(); ++it) sum_of_elems += *it;
Akkumulationsalgorithmus: Dieser Algorithmus wird von der
#include <numeric> int sum_of_elems = std::accumulate(vector.begin(), vector.end(), 0);
C 11 und höher
std::accumulate mit automatischer Eingabe: Derselbe std::accumulate-Algorithmus kann verwendet werden mit einer geringfügigen Änderung, um den Rückgabetyp automatisch basierend auf dem Elementtyp des Vektors abzuleiten.
#include <numeric> decltype(vector)::value_type sum_of_elems = std::accumulate(vector.begin(), vector.end(), decltype(vector)::value_type(0));
std::for_each-Schleife: Diese Schleifensyntax wendet ein Lambda an Funktion für jedes Element des Vektors und aktualisiert eine Summenvariable darin Bereich.
std::for_each(vector.begin(), vector.end(), [&](int n) { sum_of_elems += n; });
Bereichsbasierte for-Schleife: Diese syntaktische Zucker-for-Schleife iteriert direkt über die Elemente ohne ein separates Iteratorobjekt.
for (auto& n : vector) sum_of_elems += n;
C 17 und Später
std::reduce-Algorithmus: Dieser Algorithmus kombiniert die Elemente einer Sammlung zu einem einzigen Ergebnis unter Verwendung eines bestimmten binären Operators, in diesem Fall einer Addition . Es leitet auch automatisch den Ergebnistyp ab.
#include <numeric> auto result = std::reduce(v.begin(), v.end());
Das obige ist der detaillierte Inhalt vonWie kann ich die Elemente eines C-Vektors effizient summieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!