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

 C++ Discussion :

Comment utiliser la methode min(const _Tp& __a, const _Tp& __b, _Compare __comp)


Sujet :

C++

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Polynésie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2014
    Messages : 48
    Points : 62
    Points
    62
    Par défaut Comment utiliser la methode min(const _Tp& __a, const _Tp& __b, _Compare __comp)
    Bonjour pour faire la rotation d'un arbre j'aurais besoin d'utiliser la fonction min(), cependant
    il me renvoit une erreur
    Citation Envoyé par Compilo
    "In instantiation of const _Tp& minconst _Tp& __a, const _Tp& __b, _Compare __comp() with _Tp = int; _Compare = int"
    "___comp cannot be used as a function"
    mais je ne sais pas ce qu'est _comp, _Compare etc

    voici le bout de code
    Code c++ : 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
     
    Arbre* Arbre::rotG(Arbre * A)
    {
        Arbre * B = new Arbre();
        int a,b;
     
        B->R = A->R->getdroit();
        //rotation
        a = A->bal;
        b = B->bal;
        A->R->setdroit(B->R->getgauche());
        B->R->setgauche(A->R);
     
        A->bal = a-max(b,0)-1;
        B->bal = min((a-2),(a+b-2),(b-1));
     
        return B;
    }

  2. #2
    Membre éclairé

    Homme Profil pro
    Non disponible
    Inscrit en
    Décembre 2012
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Non disponible

    Informations forums :
    Inscription : Décembre 2012
    Messages : 478
    Points : 877
    Points
    877
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Pour controler plusieurs valeurs on peut utiliser une liste d'initialisation :
    (il y a d'autre méthodes, sans doute moins adapté ici)

    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
    Arbre* Arbre::rotG(Arbre * A)
    {
        Arbre * B = new Arbre();
        int a,b;
     
        B->R = A->R->getdroit();
        //rotation
        a = A->bal;
        b = B->bal;
        A->R->setdroit(B->R->getgauche());
        B->R->setgauche(A->R);
     
        A->bal = a-std::max(b,0)-1;
        B->bal = std::min({ (a-2),(a+b-2),(b-1) });//initializer list
     
        return B;
    }

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Polynésie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2014
    Messages : 48
    Points : 62
    Points
    62
    Par défaut
    Merci pour ta réponse. J'ai refais le code dans la logique de l'exemple avec les strings, sur le lien que tu m'as donné. Cependant y'a des erreurs que je ne comprend pas.

    Pièce jointe 157975

    Code c++ : 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    bool mod_greater(int &elem1, int &elem2)
    {
        if(elem1 < 0)
        elem1 = - elem1;
     
        if(elem2 < 0)
        elem2 = - elem2;
     
        return(elem1 > elem2);
    }
     
    Arbre* Arbre::rotD(Arbre * A)
    {
        Arbre * B = new Arbre();
        int a,b;
     
        B->R = A->R->getgauche();
        //rotation
        a = A->bal;
        b = B->bal;
        A->R->setgauche(B->R->getdroit());
        B->R->setdroit(A->R);
     
        A->bal = a-min(b,0)+1;
        B->bal = max({(a+2),(a+b+2),(b+1)},mod_greater);
        return B;
    }

  4. #4
    Membre éclairé

    Homme Profil pro
    Non disponible
    Inscrit en
    Décembre 2012
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Non disponible

    Informations forums :
    Inscription : Décembre 2012
    Messages : 478
    Points : 877
    Points
    877
    Billets dans le blog
    1
    Par défaut
    La solution est le code que j'ai renvoyé, (il y avait juste à rajouter des accolades)

    Je voulais que tu vois celui-ci dans le lien (exemple 3)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    template<class T>
    T min( std::initializer_list<T> ilist)
    {
        return *std::min_element(ilist.begin(), ilist.end());
    }
    Le "no matching function to call ..." te montre ce que tu lui donne.
    "candidates are :" est ce qu'il propose

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Polynésie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2014
    Messages : 48
    Points : 62
    Points
    62
    Par défaut
    Okay, super merci

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

Discussions similaires

  1. Comment utiliser la methode request.querystring()?
    Par Abdou.lak dans le forum ASP.NET
    Réponses: 0
    Dernier message: 07/04/2009, 14h45
  2. Réponses: 7
    Dernier message: 17/01/2008, 10h03
  3. Comment utiliser la methode POST sur une icone ?
    Par horkets dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 27/05/2007, 18h51
  4. comment utiliser la methode getBundle
    Par Robert_aime_Java dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 09/06/2006, 09h55
  5. Réponses: 2
    Dernier message: 02/05/2006, 14h34

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