IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Boost C++ Discussion :

boost.lambda et comparaison case insensitive


Sujet :

Boost C++

  1. #1
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Par défaut boost.lambda et comparaison case insensitive
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    typedef std::vector< std::string > Vec;
    Vec v;
     
    // ...
     
    using namespace boost::lambda;
     
    Vec::iterator ite = std::find_if( v.begin(), v.end(),
                                      bind( boost::iequals, "B", _1 ) );
     
    // ou alors
    Vec::iterator ite = std::find_if( v.begin(), v.end(),
                                      bind( boost::is_iequal(), "B", _1 ) );
    ...ne compilent pas.

    Si je fais moi même une fonction ou un functor, ça marche. C'est peut être à cause des templates utilisés dans iequals et is_iequal?

    si vous savez pourquoi ça ne peut pas marcher comme ça, ça m'interesse.

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Je sais pas trop pourquoi ça marche pas.
    Ceci compile, du moins.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    #include <vector>
    #include <string>
    #include <algorithm>
    #include <boost/algorithm/string.hpp>
    #include <boost/lambda/lambda.hpp>
    #include <boost/lambda/bind.hpp>
     
     
    int main()
    {
    	typedef std::vector< std::string > Vec;
    	Vec v;
     
    	using namespace boost::lambda;
     
    	Vec::iterator ite = std::find_if( v.begin(), v.end(),
                                      	bind<bool>( boost::is_iequal(), std::string("B"), _1 ) );
    }

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Par défaut
    Parce qu'il faudrait qu'il hérite de std::binary_function pour que bind retrouve le type de retour peut être?

    malheureusement ton exemple ne compile pas en tout cas sur VS2005 et boost 1.34

Discussions similaires

  1. boost lambda : appels imbriqués
    Par Patriarch24 dans le forum Boost
    Réponses: 3
    Dernier message: 24/09/2007, 15h02
  2. Comment filtrer avec une case insensitive ?
    Par savoir dans le forum Débuter
    Réponses: 2
    Dernier message: 06/09/2007, 11h09
  3. [Hibernate] Requête avec un LIKE %% case insensitive
    Par n@n¤u dans le forum Hibernate
    Réponses: 4
    Dernier message: 21/06/2006, 17h27
  4. Réponses: 2
    Dernier message: 15/05/2006, 14h08
  5. Case insensitive methode contains()
    Par mihaestii dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 12/11/2005, 11h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo