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
Freigeben: 2024-11-24 09:15:14
Original
916 Leute haben es durchsucht

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;
    Nach dem Login kopieren
  • 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);
    Nach dem Login kopieren

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));
    Nach dem Login kopieren
  • 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; });
    Nach dem Login kopieren
  • 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;
    Nach dem Login kopieren

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());
    Nach dem Login kopieren

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!

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