Outils d'utilisateurs

Outils du Site


rechercher

Différences

Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.

Lien vers cette vue

rechercher [2016/06/01 18:58]
detork [std::all_of, std::any_of et std::none_of]
rechercher [2017/01/16 19:27] (Version actuelle)
gbdivers
Ligne 17: Ligne 17:
 ===== Les algorithmes non modifiants ===== ===== Les algorithmes non modifiants =====
  
-Les algorithmes non modifiants (//non-modifying sequence operations//). Ce sont des algorithmes qui ne modifient pas les collections sur les quelles ils sont utilisés. Vous allez trouvé dans cette catégorie par exemple l'algorithme d'égalité ''std::equal'' que vous avez déjà vu, ainsi que les algorithmes de recherche (en premier lieu ''std::find''), les algorithmes de comptage (''std::count'') et l'algorithme ''std::for_each'' (qui permet d'appeler une fonction sur chaque élément d'une collection).+Les algorithmes non modifiants (//non-modifying sequence operations//). Ce sont des algorithmes qui ne modifient pas les collections sur les quelles ils sont utilisés. Vous allez trouver dans cette catégorie par exemple l'algorithme d'égalité ''std::equal'' que vous avez déjà vu, ainsi que les algorithmes de recherche (en premier lieu ''std::find''), les algorithmes de comptage (''std::count'') et l'algorithme ''std::for_each'' (qui permet d'appeler une fonction sur chaque élément d'une collection).
  
-Un algorithme non modifiants va donc prendre une collection sans la modifier et retourner un résultat. La valeur retournée peut être utiliser directement ou enregistrée dans une variable, comme n'importe quelle valeur. Le type de la valeur retournée dépend de l’algorithme et du type de collection, le plus simple est d'utiliser l’inférence de type pour créer une variable (consulter la documentation pour connaitre le type exact).+Un algorithme non modifiants va donc prendre une collection sans la modifier et retourner un résultat. La valeur retournée peut être utilisée directement ou enregistrée dans une variable, comme n'importe quelle valeur. Le type de la valeur retournée dépend de l’algorithme et du type de collection, le plus simple est d'utiliser l’inférence de type pour créer une variable (consulter la documentation pour connaitre le type exact).
  
 <note>Les exemples de code suivants utilisent une chaîne, pour simplifier l’écriture du code et l'affichage du résultat. N'oubliez pas qu'une chaîne est une collection de caractères.</note> <note>Les exemples de code suivants utilisent une chaîne, pour simplifier l’écriture du code et l'affichage du résultat. N'oubliez pas qu'une chaîne est une collection de caractères.</note>
Ligne 56: Ligne 56:
 ==== std::count et std::count_if ==== ==== std::count et std::count_if ====
  
-Les algorithmes [[http://en.cppreference.com/w/cpp/algorithm/count|std::count et std::count_if]] permettent le nombre d’éléments d'une collection correspondant respectivement une valeur et un prédicat. Ces algorithmes retournent une valeur entière signée.+Les algorithmes [[http://en.cppreference.com/w/cpp/algorithm/count|std::count et std::count_if]] retournent le nombre d’éléments d'une collection correspondant respectivement à une valeur et un prédicat. Ces algorithmes retournent une valeur entière signée.
  
 <code cpp main.cpp> <code cpp main.cpp>
Ligne 81: Ligne 81:
 ==== std::equal ==== ==== std::equal ====
  
-Et bien sur, vous avez déjà vu l'algorithme [[http://en.cppreference.com/w/cpp/algorithm/equal|std::equal]].+Et bien sûr, vous avez déjà vu l'algorithme [[http://en.cppreference.com/w/cpp/algorithm/equal|std::equal]].
  
 <code cpp main.cpp> <code cpp main.cpp>
Ligne 261: Ligne 261:
 #include <functional> #include <functional>
 #include <algorithm> #include <algorithm>
 +#include <vector>
    
 int main() { int main() {
Ligne 266: Ligne 267:
     const std::vector<int> v2 { -1, 2, -1, 2 };     const std::vector<int> v2 { -1, 2, -1, 2 };
     std::transform(begin(v1), end(v1), begin(v2), begin(v1), std::multiplies<int>());     std::transform(begin(v1), end(v1), begin(v2), begin(v1), std::multiplies<int>());
-    for (auto i: v1) std::cout << i << ' '; std::cout << std::endl;+    for (auto i: v1) std::cout << i << ' '; 
 +    std::cout << std::endl;
 } }
 </code> </code>
Ligne 613: Ligne 615:
 #include <algorithm> #include <algorithm>
 #include <vector> #include <vector>
- +#include <numeric> 
 int main() { int main() {
     std::vector<int> v1(5);     std::vector<int> v1(5);
Ligne 623: Ligne 626:
     const std::vector<int> v2 = { 2, 3, 4, 0, 1 };     const std::vector<int> v2 = { 2, 3, 4, 0, 1 };
     std::cout << std::inner_product(begin(v1), end(v1), begin(v2), 0) << std::endl;     std::cout << std::inner_product(begin(v1), end(v1), begin(v2), 0) << std::endl;
-    // = 0 * + 1 * 3 + 2 * 4 + 3 * 0 + * 1+    // = 0 * + 1 * 3 + 2 * 4 + 3 * 0 + * 1
          
     std::vector<int> v3(v2.size());     std::vector<int> v3(v2.size());
rechercher.1464800317.txt.gz · Dernière modification: 2016/06/01 18:58 par detork