====Présentation==== Les algorithmes servent soit à lire / parcourir / modifier / obtenir une information d'un conteneur. ===Lecture et écriture=== ''std::for_each'' (lecture) et ''std::transform'' (écriture). std::vector vector{ 10, 20, 30, 40 }; std::vector::const_iterator it; std::vector::iterator itc; // Lecture / écriture std::transform( vector.begin(), vector.end(), vector.begin(), [](int i) { return i + 1; } ); // Lecture seule std::for_each( vector.cbegin(), vector.cend(), [](int i) { std::cout << i << std::endl; } ); ===mismatch=== Comparer deux classes itérables. Ici, comparaison de deux string insensible à la casse. #include #include #include std::string un = "texte"; std::string deux = "Texte"; std::tuple retval = std::mismatch( un.cbegin(), un.cend(), deux.cbegin(), deux.cend(), [](char un, char deux) { return std::tolower(un) == std::tolower(deux); }); if (retval == std::make_tuple(un.cend(), deux.cend())) std::cout << "Identique" << std::endl; else std::cout << "Différent" << std::endl; ====Options==== ===Séquentiel ou parallèle=== Via l%%'%%''include '', il est possible d'utiliser la totalité des fonctions de '''' en parallèle. int x = 0; int a[] = { 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2 }; std::for_each(std::execution::par, std::begin(a), std::end(a), [&x](int) { ++x; // Pas thread-safe. }); std::cout << x << std::endl;