7
votes

Version alternative de Find_IF qui trouve tout, pas seulement le premier?

Y a-t-il une version alternative de std :: recherche_if qui renvoie un itérateur sur tous les éléments trouvés, au lieu de la première?

Exemple: xxx


3 commentaires

J'avais l'habitude de rester silencieux mais apparemment (à la suite d'une discussion), cela dérange également les autres: veuillez n'utiliser pas la balise "Programmation fonctionnelle" simplement parce qu'il existe un pointeur sur une fonction de votre code. Si quelque chose, les balises C ++ aideront les personnes qui peuvent répondre à la recherche de votre question plus rapidement.


Renvoyer l'itérateur à vectorielle / liste / anone de toutes les occurrences, puis à opérer dessus (peut-être appeler la fonction à «tous les résultats») ressemble à une programmation fonctionnelle.


@Yossarian Vous feriez mieux de mettre à jour la page Wikipedia en.wikipedia.org/wiki/funconal_programmer puis . Actuellement, il commence par "fonctions mathématiques" (ce qui signifie pur) et "évite les données de l'état et mutable" (je ne connais pas les itérateurs C ++, mais ils me semblent une bonne illustration de ce qu'est "mutable").


3 Réponses :


1
votes

Dans STL Il n'y a pas, mais Boost offre cette fonction de fonctionnalité:

Boost :: Algorithme :: Find_All


1 commentaires

La réponse est obsolète, le lien est mort. La réponse correcte est Boost :: filtre_berator



10
votes

Vous pouvez simplement utiliser un pour boucle: xxx

Vous pouvez mettre votre état et action dans un foncteur (effectuer l'action que si la condition est vrai) et il suffit d'utiliser std :: foreach .


0 commentaires

0
votes

Tout d'abord, essayez toujours de trouver une utilisation typique de stl elle-même, vous pouvez également augmenter. Voici une forme plus simplifiée de la réponse susmentionnée par Charles. XXX


0 commentaires