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 :

Problème list::sort et classe


Sujet :

SL & STL C++

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    mars 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Problème list::sort et classe
    Bonjour,
    J'ai défini dans une même classe un tableau tab et une fonction de comparaison comp_decr se servant de ce tableau.
    Maintenant, je tente d'utiliser la fonction list::sort avec cette fonction de comparaison (à l'intérieur d'une méthode de la classe), mais apparemment, le compilateur n'aime pas trop.

    Voilà mon code:
    test_sort.h :
    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
    #ifndef TEST_H
    #define TEST_H
     
    #include <vector>
    using namespace std;
     
    class Classe_sort {
    public:
        vector<int> tab;
        int size;
     
        bool comp_decr(int i, int j); // Fonction de comparaison
        void fonction();
    };
     
    #endif
    test_sort.cpp :
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    #include <vector>
    #include <list>
    #include <iostream>
    #include "Test_sort.h"
     
    using namespace std;
     
    bool Classe_sort::comp_decr(int i, int j) {
       return (tab[i]>tab[j]);
    }
     
    void Classe_sort::fonction() {
        list<int> order;
     
        tab[0] = 2;
        tab[1] = 1;
        tab[2] = 3;
        tab[3] = 0;
        size = 3;
     
        for(int i=0;i<4;i++) {
            order.push_front(i);
        }
     
        // Tri selon les valeurs de tab décroissants
        order.sort(comp_decr);
     
        // Affichage de la liste
        while (!order.empty()) {
            cerr << order.front() << " ";
            order.pop_front();
        }
        cerr << endl;
    }
    Et voilà l'erreur rendue par le compilateur:
    Test_sort.cpp: In member function ‘void Classe_sort::fonction()’:
    Test_sort.cpp:26: error: no matching function for call to ‘std::list<int, std::allocator<int> >::sort(<unresolved overloaded function type>)’
    /usr/include/c++/4.4/bits/list.tcc:301: note: candidates are: void std::list<_Tp, _Alloc>::sort() [with _Tp = int, _Alloc = std::allocator<int>]
    /usr/include/c++/4.4/bits/list.tcc:378: note: void std::list<_Tp, _Alloc>::sort(_StrictWeakOrdering) [with _StrictWeakOrdering = bool (Classe_sort::*)(int, int), _Tp = int, _Alloc = std::allocator<int>]

    Quelqu'un a-t-il une idée pour m'en sortir?

  2. #2
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    Développeur informatique
    Inscrit en
    juin 2005
    Messages
    3 507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : juin 2005
    Messages : 3 507
    Points : 6 645
    Points
    6 645
    Par défaut
    Bonjour,


    sort attend uen fonction, mais comp_decr n'en est pas une

    pour info : il est plus rapide de trier un vecteur qu'une liste car l'accès au nième élément d'un vecteur est en temps constant alors qu'il est en O(n) pour une liste
    Bruno Pagès, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non à jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    mars 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par bruno_pages Voir le message
    Bonjour,
    sort attend uen fonction, mais comp_decr n'en est pas une

    pour info : il est plus rapide de trier un vecteur qu'une liste car l'accès au nième élément d'un vecteur est en temps constant alors qu'il est en O(n) pour une liste
    D'accord, je vais essayer de me débrouiller avec un vecteur pour voir si ça passe mieux.

    Merci, et bonne journée.

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

Discussions similaires

  1. Problème de création de liste dans une classe.
    Par Leniouns dans le forum Général Java
    Réponses: 5
    Dernier message: 02/07/2013, 10h45
  2. [css]problème d'attribution de classe dans deux listes
    Par Mitaka dans le forum Mise en page CSS
    Réponses: 9
    Dernier message: 24/11/2005, 19h05
  3. Problème liste d'affichage
    Par nicolas66 dans le forum OpenGL
    Réponses: 6
    Dernier message: 06/12/2004, 11h10
  4. [JSP]Problème liste deroulante dynamique
    Par besco dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 09/09/2004, 18h58
  5. [MFC] Problème pointeur sur une classe
    Par mick74 dans le forum MFC
    Réponses: 7
    Dernier message: 14/04/2004, 15h17

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