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

SL & STL C++ Discussion :

Comprendre le foncteur bind2nd


Sujet :

SL & STL C++

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut Comprendre le foncteur bind2nd
    Hello,

    J'ai un peu mal à saisir le rôle de bind2nd.

    Soit l'exemple suivant, issu de CPlusPlus :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // bind2nd example
    #include <iostream>
    #include <functional>
    #include <algorithm>
    using namespace std;
     
    int main () {
      int numbers[] = {10,-20,-30,40,-50};
      int cx;
      cx = count_if ( numbers, numbers+5, bind2nd(less<int>(),0) );
      cout << "There are " << cx << " negative elements.\n";
      return 0;
    }
    Dites-moi si je me plante :

    count_if travaille avec un prédicat unaire, et ne passe donc au foncteur qu'un seul argument, l'élément courant, et attend un booléen.

    less<>, foncteur binaire, compare l'unique argument envoyé par count_if, et la valeur 0, puis renvoie un booléen, pour satisfaire count_if.

    L'inversion des deux arguments de bind2nd aurait nécessité l'utilisation de bind1st.

    J'ai bon ?

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Doubs (Franche Comté)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 1 391
    Par défaut
    Bonsoir,

    Tu m'as pourtant l'air d'avoir compris : bind2nd prend en arguments un foncteur binaire et u objet du second type attendu par le foncteur et créé un foncteur unaire qui appelé aura le même effet que l'appel du foncteur binaire avec comme paramètre l'argument passé et celui fixé.

    bind1st fait la même chose mais fixe le premier argument du foncteur binaire et pas le second.

    Si tu as toujours l'impression d'avoir un doute pourrais-tu être plus précis sur celui-ci ?

    NB: bind2nd, bind1st sont dépréciés en C++2011, préfère std::bind, boost::bind et les placeholders.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    Citation Envoyé par Flob90 Voir le message
    Tu m'as pourtant l'air d'avoir compris : bind2nd prend en arguments un foncteur binaire et un objet du second type attendu par le foncteur et créé un foncteur unaire qui appelé aura le même effet que l'appel du foncteur binaire avec comme paramètre l'argument passé et celui fixé.

    bind1st fait la même chose mais fixe le premier argument du foncteur binaire et pas le second.

    Si tu as toujours l'impression d'avoir un doute pourrais-tu être plus précis sur celui-ci ?
    Non non, c'est bon, merci.
    C'est juste que je n'avais pas été convaincu par les diverses descriptions lues, et que j'avais besoin d'une confirmation de ce que je pensais avoir compris.
    Merci !

    Citation Envoyé par Flob90 Voir le message
    NB: bind2nd, bind1st sont dépréciés en C++2011, préfère std::bind, boost::bind et les placeholders.
    OK, je le note bien. ;-)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 12
    Dernier message: 08/02/2005, 23h42
  2. [std::list][find_if] problème avec mes foncteurs
    Par n!co dans le forum SL & STL
    Réponses: 12
    Dernier message: 04/02/2005, 11h56
  3. [langage] comprendre une syntaxe particulière
    Par mat21 dans le forum Langage
    Réponses: 4
    Dernier message: 08/12/2004, 18h12
  4. [Concept][JavaBeans] Comprendre ?
    Par nicoo dans le forum Langage
    Réponses: 15
    Dernier message: 08/12/2004, 08h01
  5. [Procédure][java] A n'y rien comprendre
    Par Stessy dans le forum SQL
    Réponses: 2
    Dernier message: 18/03/2004, 15h05

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