On me passe un Iterator et je dois le passer à une autre fonction - mais filtré pour que certains éléments soient ignorés (c'est une plage de pointeurs, et je veux filtrer les pointeurs NULL).boost :: filter_iterator - comment le ferais-je avec le STL?
J'ai recherché sur Google "stl filter itérateur" pour voir comment faire cela, et boost::filter_iterator est apparu.
Ça a l'air sympa et je pourrais l'utiliser, mais est-ce que je pourrais le faire avec le bon vieux STL aussi? Sans copier les éléments dans un nouveau conteneur, bien sûr.
Je suppose que je devrais créer une autre classe d'itérateur qui fournit les fonctions begin()
, end()
etc nécessaires et fait le filtrage? Donc, je devrais exactement réimplémenter le boost
iterator_filter
...?
Je ne suis pas du tout d'accord: la mise à jour peut être fastidieuse à installer, et parfois vous ne voulez pas cette dépendance supplémentaire. Je pense que la raison * réelle * qu'on ne réécrirait pas 'filter_iterator' est qu'il est en fait assez difficile (et très lourd) d'écrire correctement. –