Heim >Backend-Entwicklung >C++ >Wie kann ich die Elemente eines C-Vektors effizient summieren?

Wie kann ich die Elemente eines C-Vektors effizient summieren?

Linda Hamilton
Linda HamiltonOriginal
2024-11-24 09:15:14971Durchsuche

How Can I Efficiently Sum the Elements of a C   Vector?

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 Der Header akkumuliert die Summe der Elemente, die einen Iteratorbereich durchlaufen.

    #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!

Stellungnahme:
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