Maison > développement back-end > C++ > le corps du texte

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

Linda Hamilton
Libérer: 2024-11-24 09:15:14
original
896 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!

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