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 :

vecteur sur une structure


Sujet :

C++

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5
    Points : 4
    Points
    4
    Par défaut vecteur sur une structure
    Salut tout le monde,

    Je voudrais trier une structure(nom,prenom),cad trier par nom ou par prenom.J'ai utiliser un code que j'ai trouver ici qui utilise operator();mais moi je voudrais pas l'utiliser je l'ai enlever et modifier en concequence mais sa me fait toutjours des messages d' erreurs.
    voici mon code:

    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
     
    struct A 
    { 
       std::string String; 
       std::string String2; 
    }; 
     
     
     
       bool SortByStr2 (const Person& a1, const Person& a2) const 
       { 
          return a1.name < a2.name; 
       } 
     
     
       bool SortByStr (const Person& a1, const Person& a2)const 
       { 
          return a1.name < a2.name; 
       } 
     
    int main(void)
    {
     
    vector<A> vstr;
    A a;
     
        while (std::cin>> p.String2>> p.String)
    	vstr.push_back(a);
     
    std::sort(vstr.begin(), vstr.end(),  SortByStr()); 
    //   cout  << a.String2 << a.String<<endl; 
    std::sort(vstr.begin(), vstr.end(), SortByStr2()); 
    //    cout  << a.String2 << a.String<<endl;
    Je pense que c'est au niveau des types et j'ai aussi un probleme au niveau de l'affichage merci

    Si vous pouvait m'aider sa serait super
    Merci

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    dsl,
    voila le bon code


    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
     
    struct A
    {
       std::string String;
       std::string String2;
    };
     
     
     
       bool SortByStr2 (const A& a1, const A& a2) const
       {
          return a1.name < a2.name;
       }
     
     
       bool SortByStr (const A& a1, const A& a2)const
       {
          return a1.name < a2.name;
       }
     
    int main(void)
    {
     
    vector<A> vstr;
    A a;
     
        while (std::cin>> p.String2>> p.String)
       vstr.push_back(a);
     
    std::sort(vstr.begin(), vstr.end(),  SortByStr());
    //   cout  << a.String2 << a.String<<endl;
    std::sort(vstr.begin(), vstr.end(), SortByStr2());
    //    cout  << a.String2 << a.String<<endl;

  3. #3
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Pas de parenthèses si tu insistes à utiliser des pointeurs de fonctions plutôt que des foncteurs dans l'appel du sort -- le foncteur est généralement plus rapide.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  4. #4
    Membre éclairé
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Février 2004
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Février 2004
    Messages : 644
    Points : 785
    Points
    785
    Par défaut
    question, SortByStr2 et SortByStr ne donneront une erreur de compilation, car l'attribut name qui est appelé n'existe PAS dans ta définition de structure.

    deuxièmement, même si cela aurait correcte au niveau des noms d'attributs, le tri se fait toujours de la même manière et sur le même attribut -> Ne sert à rien et retournera toujours le même tri.

    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
    39
    40
    41
    42
    43
    44
     
    struct A {
    	std::string String;
    	std::string String2;
    	A (const std::string &pString, const std::string &pString2) :
    		String(pString), String2(pString2)
    	{
    	}
    };
     
    bool SortByStr (const A& a1, const A& a2) {
    	return a1.String < a2.String;
    }
     
    bool SortByStr2 (const A& a1, const A& a2) {
    	return a1.String > a2.String;
    }
     
    int main(int argc, char **argv) {
        try {
    		std::vector< A > vect;
     
    		for (std::vector< A > :: const_iterator it = vect.begin (); it != vect.end (); ++it) {
    			std::cout << it->String << " : " << it->String2 << std::endl;
    		}
    		std::cout << std::endl;
    		std::cout << "Tri par Str" << std::endl;
    		std::sort (vect.begin(), vect.end (), SortByStr);
    		for (std::vector< A > :: const_iterator it = vect.begin (); it != vect.end (); ++it) {
    			std::cout << it->String << " : " << it->String2 << std::endl;
    		}
    		std::cout << std::endl;
     
    		std::cout << "Tri par Str2" << std::endl;
    		std::sort (vect.begin(), vect.end (), SortByStr2);
    		for (std::vector< A > :: const_iterator it = vect.begin (); it != vect.end (); ++it) {
    			std::cout << it->String << " : " << it->String2 << std::endl;
    		}
        }
        catch (const std::exception &pException) {
            std::cerr << "Exception : " << pException.what () << std::endl;
        }
        return 0;
    }
    A toi de conclure la différence entre ce code et le tien.

    Bonne journée
    Nul ne peut mieux connaitre la connaissance qu'elle-même.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    merci a tous de vos reponse j'vai voir sa
    ++

  6. #6
    Membre éclairé
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Février 2004
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Février 2004
    Messages : 644
    Points : 785
    Points
    785
    Par défaut
    de rien, tant que cela peut t'aider à mieux comprendre.

    bonne soirée
    Nul ne peut mieux connaitre la connaissance qu'elle-même.

  7. #7
    Membre éclairé
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Février 2004
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Février 2004
    Messages : 644
    Points : 785
    Points
    785
    Par défaut
    PS : peux-tu fermer ce thread en lui le marquant comme "RESOLU" ?

    Merci
    Nul ne peut mieux connaitre la connaissance qu'elle-même.

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

Discussions similaires

  1. [Structure] Aide sur une structure XML (et le vocabulaire associé)
    Par projetdk40 dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 14/02/2007, 10h38
  2. Ponteurs sur une structure.
    Par echantillon dans le forum GTK+ avec C & C++
    Réponses: 8
    Dernier message: 13/02/2007, 18h26
  3. Memset sur une structure
    Par ghostdogpr dans le forum C
    Réponses: 4
    Dernier message: 16/12/2005, 13h43
  4. Réponses: 2
    Dernier message: 13/12/2005, 16h48
  5. donée de plusieur vecteur dans une structure ??
    Par lipczynski dans le forum C++
    Réponses: 5
    Dernier message: 13/08/2004, 08h17

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