Possible en double:
Advantages of std::for_each over for loopPourquoi utiliser std :: for_each sur une boucle for?
Je jouais avec des 11 fonctionnalités C++ et je suis curieux de savoir pourquoi std :: for_each est bénéfique. Ne serait-il pas plus facile et plus propre de faire une boucle for ou est-ce parce que je suis tellement habitué à le faire de cette façon?
#include <iostream>
#include <tuple>
#include <vector>
#include <algorithm>
typedef std::tuple<int, int> pow_tuple;
pow_tuple pow(int x)
{
return std::make_tuple(x, x*x);
}
void print_values(pow_tuple values)
{
std::cout << std::get<0>(values) << "\t" << std::get<1>(values) << std::endl;
}
int main(int argc, char** argv)
{
std::vector<int> numbers;
for (int i=1; i < 10; i++)
numbers.push_back(i);
std::for_each(numbers.begin(), numbers.end(),
[](int x) { print_values(pow(x)); }
);
std::cout << "Using auto keyword:" << std::endl;
auto values = pow(20);
print_values(values);
return 0;
}
Le principal point de boucles foreach est de regarder plus soigné et plus facile pour un être humain à interpréter que leurs homologues pour (;;). Personnellement, j'ai un biais vers les boucles régulières pour – Akron
en regardant dans les fonctionnalités C++ 11 J'utiliserais le mot-clé auto déjà dans la boucle et commencer (numéros)/fin (numéros). le rend plus compatible avec différents types de données. – inf