std::for_each — cppreference.com
De cppreference.com
<metanoindex/>
<tbody> </tbody>
| Déclaré dans l'en-tête <algorithm> |
||
|
|
||
Applique la fonction donnée f objet à la suite de déréférencement chaque itération dans le [first, last) plage, dans l'ordre. Si InputIt est un itérateur modifiable, f peut modifier les éléments de la gamme par l'itérateur déréférencé. Si f renvoie un résultat, le résultat est ignoré .
Original:
Applies the given function object f to the result of dereferencing every iterator in the range [first, last), in order. If InputIt is a mutable iterator, f may modify the elements of the range through the dereferenced iterator. If f returns a result, the result is ignored.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Paramètres
| first, last | - | la gamme d'appliquer la fonction d' Original: the range to apply the function to The text has been machine-translated via Google Translate. |
| f | - | l'objet de fonction unaire appliqué Original: the unary function object to be applied The text has been machine-translated via Google Translate. |
| Type requirements | ||
-InputIt must meet the requirements of InputIterator.
| ||
-UnaryFunction must meet the requirements of MoveConstructible. Does not have to be CopyConstructible
| ||
Retourne la valeur
f. (avant C++11)
std::move(f). (depuis C++11)
Complexité
Exactement last - first applications de f
Original:
Exactly last - first applications of f
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Mise en œuvre possible
template<class InputIt, class UnaryFunction> UnaryFunction for_each(InputIt first, InputIt last, UnaryFunction f) { for (; first != last; ++first) { f(*first); } return f; }
Exemple
L'exemple suivant utilise une fonction lambda pour incrémenter tous les éléments d'un vecteur, puis calcule une somme d'eux:
Original:
The following example uses a fonction lambda to increment all of the elements of a vector and then computes a sum of them:
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
#include <vector> #include <algorithm> #include <iostream> struct Sum { Sum() { sum = 0; } void operator()(int n) { sum += n; } int sum; }; int main() { std::vector<int> nums{3, 4, 2, 9, 15, 267}; std::cout << "before: "; for (auto n : nums) { std::cout << n << " "; } std::cout << '\n'; std::for_each(nums.begin(), nums.end(), [](int &n){ n++; }); Sum s = std::for_each(nums.begin(), nums.end(), Sum()); std::cout << "after: "; for (auto n : nums) { std::cout << n << " "; } std::cout << '\n'; std::cout << "sum: " << s.sum << '\n'; }
Résultat :
before: 3 4 2 9 15 267 after: 4 5 3 10 16 268 sum: 306
Voir aussi
applique une fonction à une série d'éléments Original: applies a function to a range of elements The text has been machine-translated via Google Translate. (fonction générique) [edit] | |
| de gamme pour la boucle | exécute une boucle sur (depuis C++11) gamme Original: executes loop over range (depuis C++11) The text has been machine-translated via Google Translate. |