Bonjour
J'essaie depuis ce matin de redefinir l'opérateur == à utiliser avec la fonction find() d'un set mais rien n'y fait :p
J'ai par exemple une classe C
et un set de CCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 class C { public : int key; float val; struct lessC { inline bool operator () ( const C & c1, const C & c2 ) const { return c1.val < c2.val; } } inline bool operator == ( const C & c1 ) const { return key == c1.key; } };
std::set <C, C::lessC> monset;
J'aimerais à l'insertion que mes élements soient triés par ordre croissant selon leur valeur, d'où l'opérateur () de la classe C.
Là tout se passe bien.
Mais maintenant j'aimerais que mon find() ne recherche qu'un élement ayant une certaine key, en ignorant son val.
J'ai donc essayé de redéfinir l'opérateur == pour la classe C mais ça ne fonctionne pas ( damned, encore raté ! ).
Je dois au fur et à mesure des insertions trier les élements selon leur val tout en concervant une recherche rapide sur leur key .. La solution de ce genre de set me semblait pas mal à la place d'utiliser un vector normal, faire le tri à la main et une recherche linéaire =/
Si quelqu'un voyait l'astuce pour faire marcher ce set, je lui en serait très reconnaissant ! :p
Merci d'avance et bonne année ;)