lang:cpp:boucles
Ceci est une ancienne révision du document !
Toutes les boucles
La boucle traditionnelle
- Intervalle
for (int i = 0; i < 100; i++) std::cout << i << std::endl;
Chaque paramètre est optionnel :
int i = 0; for (;;) { if (i >= 100) break; std::cout << i << std::endl; i++; }
Et sa version while
:
int i = 0; while (i < 100) { std::cout << i << std::endl; i++; }
- Conteneur supportant les index :
std::array<int, 4> arr { 10, 20, 30, 40 }; for (size_t i = 0; i < arr.size(); i++) std::cout << arr[i] << std::endl;
Utiliser de préférence la version for each
pour parcourir l'ensemble d'un conteneur.
- Conteneur ne supportant pas les index :
std::set<int> set { 10, 20, 30, 40 }; std::set<int>::const_iterator it; for (it = set.begin(); it != set.end(); it++) std::cout << *it << std::endl;
Utiliser de préférence la version for each
pour parcourir l'ensemble d'un conteneur.
for each
- Conteneur de type primitif :
std::array<int, 4> arr = { 10, 20, 30, 40 }; for (int i : arr) std::cout << i << std::endl;
- Conteneur de type non primitif :
std::set<std::string> set { "10", "20", "30", "40" }; for (const std::string& val : set) std::cout << val << std::endl;
- Conteneur multi-types (
std::map
,std::tuple
, …) :
std::map<int, std::string> map { {10, "10"}, {20, "20"}, {30, "30"}, {40, "40"} }; // L'utilisation de auto est obligatoire. for (const auto & [key, value] : map) std::cout << value << std::endl;
- Sur une classe personnalisée :
Il faut définir l'itérateur et la classe à parcourir. C++11 range-based for loops Archive le 26/12/2019
L'exemple ci-dessous se passe de template
.
Il faut commencer par déclarer l'itérateur.
lang/cpp/boucles.1577364989.txt.gz · Dernière modification : 2019/12/26 13:56 de root