Maison > développement back-end > C++ > Quelles sont les meilleures façons de résumer les éléments d'un std::vector en C ?

Quelles sont les meilleures façons de résumer les éléments d'un std::vector en C ?

Susan Sarandon
Libérer: 2024-11-26 11:16:10
original
607 Les gens l'ont consulté

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

Méthodes alternatives pour additionner les éléments d'un std :: vector

Trouver la somme de tous les éléments d'un std :: vector est une tâche courante avec plusieurs approches efficaces. Voici plusieurs options :

Techniques classiques C 03

Boucle For :

int sum_of_elems = 0;
for (std::vector<int>::iterator it = vector.begin(); it != vector.end(); ++it)
     sum_of_elems += *it;
Copier après la connexion

Algorithme standard :

#include <numeric>

sum_of_elems = std::accumulate(vector.begin(), vector.end(), 0);
Copier après la connexion

Remarque : Sachez que le type de le dernier argument détermine le type de résultat.

Approches C modernes (C 11)

Type automatique Gestion :

#include <numeric>

sum_of_elems = std::accumulate(vector.begin(), vector.end(),
                                decltype(vector)::value_type(0));
Copier après la connexion

std::for_each:

std::for_each(vector.begin(), vector.end(), [&](int n) {
     sum_of_elems += n;
});
Copier après la connexion

Boucle For basée sur une plage :

for (auto& n : vector)
     sum_of_elems += n;
Copier après la connexion

C 17 Améliorations

std::reduce:

#include <numeric>

auto result = std::reduce(v.begin(), v.end());
Copier après la connexion

std::reduce gère l'inférence de type de résultat et offre des capacités d'exécution parallèle pour les grandes collections.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal