Bonjour, j'ai besoin d'un conseil :
J'ai une structure suivante (bateau, c'est un point...)
J'ai besoin de trier par x puis par y.
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;
Méthode envisagée :
Ma question est simple :
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() ... }
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![]()
Partager