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

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

DDD
DDDOriginal
2024-12-03 16:45:13622Durchsuche

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

Effiziente Methoden zum Summieren von Elementen in einem std::vector

In Szenarien, in denen Sie die kumulative Summe von Elementen innerhalb eines std ermitteln müssen ::vector gibt es mehrere effiziente Ansätze.

C 03 Lösungen:

  1. Klassische For-Schleife:

    int sum_of_elems = 0;
    for (std::vector<int>::iterator it = vector.begin(); it != vector.end(); ++it)
        sum_of_elems += *it;
  2. Standardalgorithmus:

    #include <numeric>
    
    sum_of_elems = std::accumulate(vector.begin(), vector.end(), 0);

    Hinweis: Das Finale Der Typ des Arguments bestimmt den Anfangswert und den Ergebnistyp. Verwenden Sie für Gleitkomma-Eingaben 0,0 anstelle von 0.

C 11 und höher Erweiterungen:

  1. Automatischer Vektortyp Handhabung:

    #include <numeric>
    
    sum_of_elems = std::accumulate(vector.begin(), vector.end(),
                                   decltype(vector)::value_type(0));
  2. std::for_each Nutzung:

    std::for_each(vector.begin(), vector.end(), [&](int n) {
        sum_of_elems += n;
    });
  3. Bereichsbasiert für Schleife:

    for (auto& n : vector)
        sum_of_elems += n;

C 17 und spätere Ergänzungen:

  1. std:: Mit automatischem Ergebnistyp reduzieren:

    #include <numeric>
    
    auto result = std::reduce(v.begin(), v.end());

    Die Überladungen dieser Funktion ermöglichen die Parallelverarbeitung für umfangreiche Sammlungen.

Das obige ist der detaillierte Inhalt vonWas sind die effizienten 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!

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