lang:cpp:boucles
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| lang:cpp:boucles [2020/03/03 17:28] – Précision sur les limites des ranges root | lang:cpp:boucles [2020/06/16 15:00] (Version actuelle) – Précision sur le style fonctionnel root | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | ====Boucle sur des données==== | + | =====Boucle sur des données |
| - | ===Conteneur supportant les index=== | + | ====Conteneur supportant les index==== |
| <code cpp> | <code cpp> | ||
| Ligne 8: | Ligne 8: | ||
| </ | </ | ||
| - | ===Conteneur supportant les itérateurs=== | + | ====Conteneur supportant les itérateurs==== |
| <code cpp> | <code cpp> | ||
| std:: | std:: | ||
| Ligne 22: | Ligne 22: | ||
| std::cout << *itc << std::endl; | std::cout << *itc << std::endl; | ||
| </ | </ | ||
| + | |||
| + | =====Programmation fonctionnelle===== | ||
| ====for each==== | ====for each==== | ||
| Ligne 29: | Ligne 31: | ||
| <code cpp> | <code cpp> | ||
| std:: | std:: | ||
| - | for (int i : arr) | + | // Ici, on utilise const & pour conserver le style fonctionnel. |
| + | // Mais passer en copie un type primitif n'est pas plus penalisant que d' | ||
| + | for (const int& i : arr) | ||
| std::cout << i << std::endl; | std::cout << i << std::endl; | ||
| </ | </ | ||
| Ligne 42: | Ligne 46: | ||
| </ | </ | ||
| - | ===Conteneur multi-types ('' | + | ===Conteneur multi-types (map, tuple, ...)=== |
| <code cpp> | <code cpp> | ||
| Ligne 48: | Ligne 52: | ||
| // L' | // L' | ||
| + | // const s' | ||
| for (const auto & [key, value] : map) | for (const auto & [key, value] : map) | ||
| std::cout << value << std::endl; | std::cout << value << std::endl; | ||
| Ligne 70: | Ligne 75: | ||
| </ | </ | ||
| - | ===Sur une classe personnalisée=== | + | ===Implémentation sur une classe personnalisée=== |
| Il faut définir l' | Il faut définir l' | ||
| - | L'exemple ci-dessous se passe de '' | + | Dans l'idéal, '' |
| Il faut commencer par déclarer l' | Il faut commencer par déclarer l' | ||
| Ligne 174: | Ligne 179: | ||
| { | { | ||
| std::cout << i.getA() << std::endl; | std::cout << i.getA() << std::endl; | ||
| - | } | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | ===Via une coroutine=== | ||
| - | |||
| - | <code cpp> | ||
| - | #include < | ||
| - | #include < | ||
| - | |||
| - | std:: | ||
| - | { | ||
| - | for (int i = 0; i < iterations; i++) | ||
| - | { | ||
| - | co_yield i; | ||
| - | } | ||
| - | } | ||
| - | |||
| - | int main() | ||
| - | { | ||
| - | for (int i : loop(100)) | ||
| - | { | ||
| - | std::cout << i << std::endl; | ||
| } | } | ||
| } | } | ||
| Ligne 266: | Ligne 248: | ||
| </ | </ | ||
| - | <note important> | + | <WRAP center round important |
| + | Les vues sont en lecture seule | ||
| + | </WRAP> | ||
| Le code | Le code | ||
| Ligne 307: | Ligne 291: | ||
| } | } | ||
| </ | </ | ||
| + | |||
| + | =====Via une coroutine===== | ||
| + | |||
| + | <code cpp> | ||
| + | #include < | ||
| + | #include < | ||
| + | |||
| + | std:: | ||
| + | { | ||
| + | for (int i = 0; i < iterations; i++) | ||
| + | { | ||
| + | co_yield i; | ||
| + | } | ||
| + | } | ||
| + | |||
| + | int main() | ||
| + | { | ||
| + | for (int i : loop(100)) | ||
| + | { | ||
| + | std::cout << i << std::endl; | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
lang/cpp/boucles.1583252895.txt.gz · Dernière modification : de root
