Aujourd'hui, j'ai écrit un petit prédicat pour trouver des symboles correspondants dans un conteneur.Algorithmes STL et const_iterators
Mais je suis confronté à un problème: je veux utiliser ce prédicat dans un appel std::find_if
à l'intérieur d'une const-méthode d'une classe, la recherche dans un conteneur qui est membre de cette classe.
Mais je viens de remarquer que ni std::find
ni std::find_if
ne peuvent fonctionner sur const_iterators
! J'ai vérifié sur certaines références C++ et il semble qu'il n'y ait pas de version de std::find
ou std::find_if
qui accepte/retourne const_iterators
Je ne comprends tout simplement pas pourquoi, d'après ce que j'ai vu, il n'y a aucun moyen que ces algorithmes puissent modifier l'objet référencé par l'itérateur.
Voici comment est documenté std::find
dans la mise en œuvre SGI:
Renvoie le premier itérateur i dans la gamme [first, last) de telle sorte que * i == valeur. Renvoie en dernier si aucun itérateur n'existe.
Quelle est l'erreur réelle que vous obtenez? Pouvez-vous également poster un exemple de code? Merci –
En fait, vous venez de mal lire la documentation, voir la réponse de Pavel ci-dessous. Si vous testez, vous verrez que cela fonctionne définitivement. –
Votre question implique que vous avez un code qui ne fonctionne pas - en particulier "Mais je suis confronté à un problème" - alors que vous pensez tout simplement à haute voix. J'ai downvoted cette question parce que si vous l'aviez essayé, vous l'auriez vu fonctionner. –