Cammer des éléments vectoriels en C ++

Cammer des éléments vectoriels en C ++
La façon évidente de résumer les éléments d'un vecteur est de les ajouter un par un à partir de la première. En fait, il n'y a pas d'autre moyen, ce qui a un avantage à ce sujet, tout étant égal. Et donc la boucle classique peut être utilisée pour résumer les éléments d'un vecteur; La gamme basée sur la gamme peut être utilisée pour résumer les éléments d'un vecteur; La fonction for_each () incluse dans la bibliothèque d'algorithmes peut être utilisée pour résumer les éléments d'un vecteur; La fonction accumulée () incluse dans la bibliothèque numérique peut être utilisée pour résumer les éléments d'un vecteur.

Avec les trois premières méthodes mentionnées ci-dessus, les déclarations doivent être écrites pour réellement faire le sommage. Avec la méthode accumulée, la fonction accumulée () fait le sommation sans instructions de sommation supplémentaires. Ces quatre méthodes sont illustrées dans cet article. Afin de coder un vecteur dans un programme C ++, la bibliothèque vectorielle est incluse dans le programme.

Contenu de l'article

- Ajout d'éléments vectoriels à l'aide de la boucle pour

- Ajout d'éléments vectoriels en utilisant la gamme basée sur la mise en place

- Ajout d'éléments vectoriels à l'aide de la fonction for_each ()

- Ajout d'éléments vectoriels à l'aide de la fonction accumulée ()

- Conclusion

Ajout d'éléments vectoriels à l'aide de la boucle pour

Considérez le vecteur:

vecteur vtr = 1.1, 2.2, 3.3, 4.4, 5.5;

Afin d'ajouter tous ces éléments depuis le début, une variable de somme, détenant initialement la valeur de zéro, doit être déclarée comme suit:

Float Sum = 0.0;

De l'index zéro à la dernière index, chaque valeur est ajoutée pour résumer dans une boucle pour. Le programme suivant illustre ceci:

#inclure
#inclure
Utilisation de Namespace Std;
int main()

vectorvtr = 1.1, 2.2, 3.3, 4.4, 5.5;
Float Sum = 0.0;
pour (int i = 0; isum + = vtr [i];
couter<< sum <retour 0;

La sortie est 16.5 Comme prévu. Notez que la bibliothèque vectorielle a été incluse et que l'espace de noms standard a été utilisé.

Ajout d'éléments vectoriels en utilisant la gamme basée sur la mise en place

Considérez le vecteur des entiers suivants:

vecteur vtr = 1, 2, 3, 4, 5;

Afin d'ajouter tous ces éléments depuis le début, une variable de somme, détenant initialement la valeur de zéro, doit être déclarée comme suit:

int sum = 0;

Du premier élément du vecteur au dernier élément, chaque valeur est ajoutée pour résumer dans la boucle basée sur la plage. L'énoncé à compennes basé sur la plage est similaire à l'énoncé à compenser ci-dessus. Cependant, les paramètres de la boucle basée sur la plage sont différents de ceux de la boucle classique (ci-dessus).

Il y a deux paramètres entre parenthèses de la boucle basée sur la plage: la première est une déclaration variable qui se réfère à l'élément suivant du vecteur, à partir de la première. Il remplace Vtr [i], de la boucle pour la boucle classique ci-dessus. Le deuxième paramètre est le nom du vecteur. La syntaxe de l'énoncé à compennes basé sur la gamme est

Pour (Initial-Statement-Optional For Range Declaration: For-Range-Initializer)

La boucle basée sur la gamme est une variante de la boucle classique; Il est plus pratique à utiliser dans les listes itératives. La déclaration variable est devant le côlon, et le nom du vecteur est après le côlon. Le programme suivant montre l'énoncé des composé de plage en action:

#inclure
#inclure
Utilisation de Namespace Std;
int main()

vectorvtr = 1, 2, 3, 4, 5;
int sum = 0;
pour (int var: vtr)
sum + = var;
couter<< sum <retour 0;

La sortie est 15. Remarque: Le nom de la variable, var, est le choix du programmeur. Dans cette position, il fait référence à l'élément suivant (valeur) dans le vecteur.

Ajout d'éléments vectoriels à l'aide de la fonction for_each ()

La fonction for_each () se trouve dans la bibliothèque d'algorithme. La syntaxe est:

modèle
Fonction Consxpr pour_EACH (Inputiterator First, InputIterator Last, Fonction F);

Le premier argument est un itérateur qui pointe vers le début (premier élément) du vecteur. Le deuxième argument est un itérateur qui pointe vers la fin (juste après le dernier élément) du même vecteur. Le troisième argument n'est que le nom de la fonction qui a le code pour faire le sommation. Cette fonction est un objet de fonction.

La fonction for_each () est utilisée comme appel de fonction, qui enverra chaque élément du vecteur, en commençant de la première à une autre fonction, f. La fonction, F fera tout ce qu'il veut faire avec l'élément de son corps de fonction. Chaque élément du vecteur est un argument de la fonction, f. Le programmeur définit la fonction, F et peut lui donner le nom autre que f (). Le paramètre de cette fonction doit être du type de chacun des éléments vectoriels (tous les éléments vectoriels sont du même type). Le nom du paramètre est le choix du programmeur. Ainsi, la fonction for_each () appelle la fonction, f () pour chaque élément vectoriel.

Le programme pour utiliser la fonction for_each () doit commencer comme suit:

#inclure
#inclure
#inclure
Utilisation de Namespace Std;
vecteur vtr = 1, 2, 3, 4, 5;
int sum = 0;

Les bibliothèques vectorielles et algorithmes sont incluses. Le vecteur initialisé et la somme initialisée de zéro sont déclarées. Une bonne définition de fonction de sommation pour F, qui suit dans le programme, peut être:

void fn (int var)
sum + = var;

Chaque fois que la fonction, FN est appelée par la fonction for_each (), la valeur suivante du vecteur est ajoutée à la somme. La fonction principale C ++ peut être la suivante:

int main()

for_each (vtr.begin (), vtr.end (), fn);
couter << sum << endl;
retour 0;

La fonction for_each () est appelée une fois à partir de la bibliothèque d'algorithme. Son premier argument est un itérateur qui pointe vers le début du vecteur; Le deuxième argument pointe vers la fin du vecteur; et le troisième argument est le nom de l'objet de fonction, qui est appelé pour chaque élément du vecteur. Après le nombre d'appels, qui correspondent au nombre d'éléments vectoriels, ont été effectués, l'instruction suivante dans la fonction principale, imprime la somme finale.

Ajout d'éléments vectoriels à l'aide de la fonction accumulée ()

La syntaxe de la fonction accumulée () de la bibliothèque numérique est:

modèle
CONSEXPR T s'accumule (Inputiterator First, Inputiterator Last, T init);

Avec cette fonction, le programmeur n'est pas nécessaire d'écrire du code (instructions) pour résumer. La fonction accumulée () fait le sommation. Son premier argument est un itérateur pointant vers le début du vecteur. Son deuxième argument est un itérateur, pointant vers la fin du vecteur. Son dernier argument est la valeur de somme initiale. Il doit être nul pour un vecteur d'intrs et 0.0 pour un vecteur de flotteurs (ou en double). La fonction renvoie la somme.

Vecteur d'entiers

Le programme suivant résume tous les éléments d'un vecteur d'entiers:

#inclure
#inclure
#inclure
Utilisation de Namespace Std;
int main()

vectorvtr = 1, 2, 3, 4, 5;
int sum = accumuler (vtr.begin (), vtr.end (), 0);
couter<< sum <retour 0;

La sortie est de 15; correct!

Vecteur de flotteurs

Le programme suivant résume tous les éléments d'un vecteur de flotteurs:

#inclure
#inclure
#inclure
Utilisation de Namespace Std;
int main()

vectorvtr = 1.1, 2.2, 3.3, 4.4, 5.5;
float sum = accumuler (vtr.begin (), vtr.end (), 0.0);
couter<< sum <retour 0;

La sortie est 16.5; correct!

Problème avec la fonction accumulée

Si le troisième argument de la fonction accumulée est le mauvais type, alors la somme serait erronée. Par exemple, si les éléments sont des flotteurs et que le troisième argument est 0 (entier), alors la somme ignorerait toutes les parties décimales des valeurs pour avoir une somme int. Le programme suivant illustre ceci:

#inclure
#inclure
#inclure
Utilisation de Namespace Std;
int main()

vectorvtr = 1.1, 2.2, 3.3, 4.4, 5.5;
float sum = accumuler (vtr.begin (), vtr.end (), 0);
couter<< sum <retour 0;

La sortie est de 15; faux!

Conclusion

La boucle classique peut être utilisée pour résumer les éléments d'un vecteur. La gamme basée sur la gamme peut être utilisée pour résumer les éléments d'un vecteur. La fonction for_each () incluse dans la bibliothèque d'algorithmes peut être utilisée pour résumer les éléments d'un vecteur. La fonction accumulée () incluse dans la bibliothèque numérique peut être utilisée pour résumer les éléments d'un vecteur. Attention à une utilisation incorrecte de son troisième argument.