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 :

Conseil choix structure STL


Sujet :

SL & STL C++

  1. #1
    Membre habitué Avatar de SteelBox
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2002
    Messages : 446
    Points : 194
    Points
    194
    Par défaut Conseil choix structure STL
    Bonjour, j'ai besoin d'un conseil :

    J'ai une structure suivante (bateau, c'est un point...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    struct elt{
    int x;
    int y;
    };
    list<elt> l; //deque<elt> d;
    J'ai besoin de trier par x puis par y.

    Méthode envisagée :
    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
     
    void MaClasse::Insertion(elt e)
    {
       list<elt>::iterator i=l.begin();
       for(;i!=l.end();i++)
       {
          if( (l->x) == e.x)
             // cherche le y
             while((i!=l.end()) && ((l->y) > e.y))
                i++;
          else
              if( (l->x) > e.x)
                break; // tu es supérieur, tu arrêtes...
       }
       // arrivée ici, i pointe sur l'élément AVANT lequel tu dois insérer (il pointe sur l.end() si tu dois insérer à la fin)
       // cf l.insert() ...
    }
    Ma question est simple :
    Y'a t'il d'autres structures plus performantes pour faire ce que je veux faire ?
    Dans le cas de la multimap, x serait ta clé, et il y aurait une fonction de hashage sur le x (en gros, ca peut être une bonne solution si tu fais presque toutes tes recherches sur un élt : en l'occurence x). Je pense pas que ce soit une meilleure solution...

    QU'en pensez vous ?
    Merci

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Pourquoi pas ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    struct SortMyElts
    {
        bool operator ()(const elt& e1, const elt& e2) const
        {
            return e1.x == e2.x ? e1.y < e2.y : e1.x < e2.x;
        }
    };
     
    std::set<elt, SortMyElts> s;
     
    s.insert(e); // Insère au bon endroit, en temps logarithmique
    Après il faut voir ce que tu auras à faire comme autres opérations sur ton ensemble.

  3. #3
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 279
    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 279
    Points : 11 015
    Points
    11 015
    Par défaut
    Il doit être possible de générer (au besoin) des ensembles/structures triées d'indirections vers les éléments originaux de ton premier tableau.
    Si j'ai bien suivi, c'est ce qu'enveloppe pour nous boost.multi_index (je peux me tromper, n'ayant jamais utilisé la bibliothèque en question)

  4. #4
    Membre habitué Avatar de SteelBox
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2002
    Messages : 446
    Points : 194
    Points
    194
    Par défaut
    L'exemple de Loulou24 me convient bien? Je savais bien qu'il y a avait moyen de le faire en exploitant encore plus la STL...
    Merci

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

Discussions similaires

  1. [Hardware][Conseil] Choix d'un serveur
    Par you98 dans le forum Ordinateurs
    Réponses: 2
    Dernier message: 12/11/2005, 14h52
  2. [Hardware][Conseil] Choix d'une carte graphique bas de gamme
    Par Laurent Gomila dans le forum Composants
    Réponses: 3
    Dernier message: 09/11/2005, 10h55
  3. [Conseil] Choix de son forum
    Par Acti dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 19/08/2005, 13h08
  4. Performance structure STL
    Par SteelBox dans le forum SL & STL
    Réponses: 9
    Dernier message: 21/11/2004, 11h43
  5. Conseille Choix entre MySQL et InterBase?
    Par Redhouane dans le forum Bases de données
    Réponses: 3
    Dernier message: 28/09/2004, 11h42

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