Bonjour, je remercie par avance tous ceux qui s'int�resseront � mon probl�me. J'ai cherch� une solution au probl�me suivant, j'en ai trouv�, aucune n'a march�. Le voici : j'impl�mente un algorithme de clustering et j'aurai besoin de stocker mes ar�tes dans un ensemble qui n'accepte pas les doublons. Pour ce faire j'ai d�cid� d'utiliser un "unordered_set" . D'apr�s le prototype de la fonction j'ai vu que je devais fournir une fonction de hachage pour mon objet Edge et aussi d'une fonction qui permet de tester l'�galit�.
Voici l'une des nombres choses que j'ai test� :
Je suis d�butant en C++ j'ai essay� d'adapter � mon probl�me une solution que j'ai trouv� sur le net mais j'obtiens des erreurs du style "extra qualification 'Edge'::on member operator ==
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 template<typename T> struct MyEdgeHash : public std::unary_function<std::edge<T>, size_t> { size_t operator()(const std::edge<T>& e) const { return hash(e.cost); } }; template<typename T> struct MyedgeEqual : public std::unary_function<std::edge<T>, bool> { bool operator()(const std::edge<T>& left, const std::edge<T>& right) const { return (left.vertex1 == right.vertex1 and left.vertex2 == right.vertex2) or (left.vertex1 == right.vertex2 and left.vertex2 == right.vertex1); } }; typedef unordered_set<edge<Edge>, MyEdgeHash<Edge>, MyedgeEqual<Edge>> Graph;
Pourtant j'ai trouv� partout qu'il fallait red�finir cet op�rateur alors je perds un espoir. Merci de votre aide.
Partager