web-dev-qa-db-fra.com

Somme des valeurs de 2 vecteurs

Existe-t-il une méthode implémentée dans la bibliothèque C++ qui vous permet de additionner les valeurs de deux vecteurs (de même taille et de même type bien sûr)?
Par exemple:

std::vector<int> a;//looks like this: 2,0,1,5,0
std::vector<int> b;//looks like this: 0,0,1,3,5

Maintenant, l'ajout de leurs valeurs devrait ressembler à ceci:

//2,0,2,8,5

La réponse que j'attends est soit "Non, il n'y en a pas", soit "Oui" + méthode.

22
MrGuy

Vous pouvez utiliser std::transform et std::plus<int>()

std::vector<int> a;//looks like this: 2,0,1,5,0
std::vector<int> b;//looks like this: 0,0,1,3,5

// std::plus adds together its two arguments:
std::transform (a.begin(), a.end(), b.begin(), a.begin(), std::plus<int>());
// a = 2,0,2,8,5

Cette forme de std::transform Prend 5 arguments:

  • Deux premiers sont des itérateurs d'entrée aux positions initiale et finale de la première séquence.
  • Le troisième est un itérateur d'entrée à la position initiale de la deuxième plage.
  • Le quatrième est un itérateur de sortie de la position initiale de la plage où les résultats de l'opération sont stockés.
  • Le dernier argument est une fonction binaire qui accepte deux éléments comme argument (une de chacune des deux séquences) et renvoie une valeur de résultat convertible au type pointé par OutputIterator.
49
Jérôme