Heim > Backend-Entwicklung > C++ > Was sind die besten Möglichkeiten, die Elemente eines std::vector in C zu summieren?

Was sind die besten Möglichkeiten, die Elemente eines std::vector in C zu summieren?

Susan Sarandon
Freigeben: 2024-11-26 11:16:10
Original
610 Leute haben es durchsucht

What are the Best Ways to Sum the Elements of a std::vector in C  ?

Alternative Methoden zum Summieren von Elementen eines std::vector

Das Ermitteln der Summe aller Elemente in einem std::vector ist eine häufige Aufgabe mit mehreren effizienten Ansätzen. Hier sind mehrere Optionen:

Klassische C 03-Techniken

For-Schleife:

int sum_of_elems = 0;
for (std::vector<int>::iterator it = vector.begin(); it != vector.end(); ++it)
     sum_of_elems += *it;
Nach dem Login kopieren

Standardalgorithmus:

#include <numeric>

sum_of_elems = std::accumulate(vector.begin(), vector.end(), 0);
Nach dem Login kopieren

Hinweis: Beachten Sie, dass der Typ des letzten Argument bestimmt den Ergebnistyp.

Moderne C-Ansätze (C 11)

Automatische Typbehandlung:

#include <numeric>

sum_of_elems = std::accumulate(vector.begin(), vector.end(),
                                decltype(vector)::value_type(0));
Nach dem Login kopieren

std:: for_each:

std::for_each(vector.begin(), vector.end(), [&](int n) {
     sum_of_elems += n;
});
Nach dem Login kopieren

Bereichsbasiert für Schleife:

for (auto& n : vector)
     sum_of_elems += n;
Nach dem Login kopieren

C 17-Erweiterungen

std::reduce:

#include <numeric>

auto result = std::reduce(v.begin(), v.end());
Nach dem Login kopieren

std::reduce behandelt den Ergebnistyp Inferenz und bietet parallele Ausführungsfunktionen für große Sammlungen.

Das obige ist der detaillierte Inhalt vonWas sind die besten Möglichkeiten, die Elemente eines std::vector in C zu summieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage