Maison > développement back-end > C++ > Comment puis-je additionner efficacement les éléments d'un vecteur C ?

Comment puis-je additionner efficacement les éléments d'un vecteur C ?

Linda Hamilton
Libérer: 2024-11-24 09:15:14
original
1021 Les gens l'ont consulté

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

Détermination de la somme des éléments dans un vecteur C

En C, trouver la somme des éléments dans un std::vector nécessite une boucle ou un algorithme standard pour parcourir et accumuler les valeurs. Le choix de la méthode dépend de la version de C utilisée, et chaque approche offre ses propres avantages.

C 03

  • Classique boucle for : Utiliser une boucle for traditionnelle pour parcourir les éléments et incrémenter une somme courante variable.

    int sum_of_elems = 0;
    for (auto it = vector.begin(); it != vector.end(); ++it)
      sum_of_elems += *it;
    Copier après la connexion
  • algorithme d'accumulation : Cet algorithme fourni par la variable l'en-tête accumule la somme des éléments passés à travers une plage d'itérateurs.

    #include <numeric>
    int sum_of_elems = std::accumulate(vector.begin(), vector.end(), 0);
    Copier après la connexion

C 11 et supérieur

  • std::accumulate avec saisie automatique : Le même algorithme std::accumulate peut être utilisé avec un légère modification pour déduire automatiquement le type de retour en fonction du type d'élément du vecteur.

    #include <numeric>
    decltype(vector)::value_type sum_of_elems = std::accumulate(vector.begin(), vector.end(), decltype(vector)::value_type(0));
    Copier après la connexion
  • std::for_each loop: Cette syntaxe de boucle applique une fonction lambda à chaque élément du vecteur, mettant à jour une variable de somme dans son scope.

    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 : Ce sucre syntaxique pour les boucles parcourt les éléments directement sans objet itérateur séparé.

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

C 17 et Plus tard

  • algorithme std::reduce : Cet algorithme combine les éléments d'une collection en un seul résultat à l'aide d'un opérateur binaire spécifique, dans ce cas l'addition . Il déduit également automatiquement le type de résultat.

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

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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal