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