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 :

Tier un tableau de structure


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 112
    Par défaut Tier un tableau de structure
    Est-ce que std::sort peut être utilisé avec un tableau de structure ?


    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
    35
    36
    37
    38
    #include <cstdlib>
    #include <iostream>
     
    using namespace std;
     
     
    struct Tableau
    {
           long a, b;
    };
     
    Tableau tableau[9];
     
     
     
    int main()
    {
        tableau[0].a = 0;    tableau[0].b = 5;
        tableau[1].a = 1;    tableau[1].b = 6;
        tableau[2].a = 2;    tableau[2].b = 7;
        tableau[3].a = 3;    tableau[3].b = 1;
        tableau[4].a = 4;    tableau[4].b = 4;
        tableau[5].a = 5;    tableau[5].b = 3;
        tableau[6].a = 6;    tableau[6].b = 5;
        tableau[7].a = 7;    tableau[7].b = 6;
        tableau[8].a = 8;    tableau[8].b = 9;
        tableau[9].a = 9;    tableau[9].b = 1;
     
     
        sort(tableau.b, tableau.b + 9);
     
        for (long i = 0 ; i < 9 ; i++)
        {
            cout << tableau[i].a << "\t" << tableau[i].b << endl;
        }
     
        system("pause");
    }
    Cet exemple ne compile pas : request for member 'b' in 'tableau', which is of non-class type 'Tableau[9]'

  2. #2
    Membre expérimenté
    Avatar de David Fleury
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 253
    Par défaut
    Oui.

    struct Tableau { long a, b; };
    bool CompareB( const Tableau& lhs, const Tableau& rhs )
    { return lhs.b < rhs.b;}

    ...

    std::sort(tableau, tableau + 9, CompareB );
    et j'avais pas vu le message indentique ou presque à côté

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 112
    Par défaut
    Génial, ça marche, merci !


    Edit : Et comment faire pour comparer toute la structure en un seul bloc ?



    (Si les deux discussions sont trop similaires, peut-être qu'il faudrait les fusionner )

  4. #4
    Membre éprouvé Avatar de galak63
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 126
    Par défaut
    Citation Envoyé par Nikolas
    Génial, ça marche, merci !


    Edit : Et comment faire pour comparer toute la structure en un seul bloc ?



    (Si les deux discussions sont trop similaires, peut-être qu'il faudrait les fusionner )
    Exactement de la meme façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    struct Tableau { long a, b; };
    bool CompareTableau( const Tableau& lhs, const Tableau& rhs )
    { return (lhs.a < rhs.a) && (lhs.b < rhs.b);}
     
    ...
     
    std::sort(tableau, tableau + 9, CompareTableau );

  5. #5
    Membre expérimenté
    Avatar de David Fleury
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 253
    Par défaut
    struct Tableau { long a, b; };
    bool CompareTableau( const Tableau& lhs, const Tableau& rhs )
    { return (lhs.a < rhs.a) && (lhs.b < rhs.b);}
    pas sûr... (les égalités sur a sont mal géré dans ton exemple)
    j'aurais plutôt fait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    struct Tableau { long a, b; };
    bool CompareTableau( const Tableau& lhs, const Tableau& rhs )
    { return (lhs.a < rhs.a) ||  (!(rhs.a<lhs.a)&& (lhs.b < rhs.b));}

  6. #6
    Membre éprouvé Avatar de galak63
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 126
    Par défaut
    oui, si a est prioritaire par rapport a b tu as raison

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/05/2006, 11h46
  2. Tableau de structures en parametre d'une fonction
    Par -No Comment- dans le forum C
    Réponses: 19
    Dernier message: 29/03/2006, 15h00
  3. [VB6]Tri multi-colonnes sur tableau de structure
    Par ELGUEVEL dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 17/02/2006, 08h02
  4. Réponses: 9
    Dernier message: 13/02/2006, 08h39
  5. Trier un tableau de structures
    Par Yux dans le forum C
    Réponses: 7
    Dernier message: 05/11/2005, 17h28

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