Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.
string_view [2014/10/10 01:57] gbdivers créée |
string_view [2015/10/15 09:10] (Version actuelle) gbdivers |
||
---|---|---|---|
Ligne 2: | Ligne 2: | ||
^ Chapitre précédent ^ [[programmez_avec_le_langage_c|Sommaire principal]] ^ Chapitre suivant ^ | ^ Chapitre précédent ^ [[programmez_avec_le_langage_c|Sommaire principal]] ^ Chapitre suivant ^ | ||
- | ====== Les vues sur les collections ====== | + | |
+ | ====== Les ranges et vues sur les collections ====== | ||
+ | |||
+ | ====== Les ranges ====== | ||
+ | |||
+ | Les algorithmes utilisent des itérateurs pour manipuler les collections de données. Une contrainte forte est que les paires d'itérateurs doivent provenir de la même collection. | ||
+ | |||
+ | <code cpp> | ||
+ | vector<int> v1(10), v2(10); | ||
+ | find(begin(v1), end(v1), 0); // ok | ||
+ | find(begin(v1), end(v2), 0); // erreur | ||
+ | </code> | ||
+ | |||
+ | Pour éviter ce type d'erreur, un range encapsule une paire d'itérateurs dans une classe. Il est plus facile dans ces conditions de vérifier la cohérence des itérateurs. | ||
+ | |||
+ | 1. Ecrire une classe Range contenant une paire d'itérateurs | ||
+ | |||
+ | * sémantique de valeur | ||
+ | * en mode débug, conserver une référence sur la collection et vérifier que les itérateur sont cohérents ? | ||
+ | |||
+ | 2. Réécrire les algorithmes de la bibliothèque standard pour prendre en compte les ranges | ||
+ | |||
+ | http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4128.html | ||
+ | |||
+ | __ DP proxy ? __ | ||
Problématique : on a une collection spécifique et l'on veut la manipuler comme si c'était une collection d'un autre type. Ou une sous collection | Problématique : on a une collection spécifique et l'on veut la manipuler comme si c'était une collection d'un autre type. Ou une sous collection |