Voila j'ai créer une petite hashmap pour stocker des matériaux et des groupes de meshes .
La clef est le matériaux et l'objet le MesheGroupe
Chaque meshe est associé à un matériaux. Si celui-ci existe déja dans cette hashmap, j'ajoute la meshe au MesheGroupe. Problème il ne trouve jamais de matériaux. . Enfin si une fois mais il devrait l'avoir fait pleins de fois avant.
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
18
19
20
21
22
23
24
25
26
27
28 // hashing function class MateriauxHash { public: MateriauxHash() { } #if wxUSE_STL && defined(HAVE_STL_HASH_MAP) size_t operator()( const Materiaux* k ) const { return (size_t)k; } #else wxUIntPtr operator()( const Materiaux* k ) const { return wxPtrToUInt(k); } #endif MateriauxHash& operator=(const MateriauxHash&) { return *this; } }; //comparison operator class MatKeyEqual { public: MatKeyEqual() { } bool operator()( const Materiaux* a, const Materiaux* b ) const { return a->Compare(b); } MatKeyEqual& operator=(const MatKeyEqual&) { return *this; } }; WX_DECLARE_HASH_MAP( Materiaux*, MesheGroupe*, MateriauxHash, MatKeyEqual, HashMapLoadMatMeshe );Ce code lance un test d'égalité lors d'une N ème insertion mais au deuxième il aurait déja dû le faire. Je comprend pas, pour chaque clef rajoutée, il devrait faire un test sur chaqu'une des clefs ? Là après en avoir inséré plusieurs il me fait un test et se révèle positif. Je comprend pas comment marche cette HashMap
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 HashMapLoadMatMeshe::value_type avalue( aMateriaux,new MesheGroupe() ); HashMapLoadMatMeshe::Insert_Result aresultinsert = aHMLoadMatMeshe.insert(avalue); if(!aresultinsert.second) {//le matériaux existe déja delete aMateriaux; delete avalue.second; } aresultinsert.first->second->AddMeshe( aMeshe );
J'ai essayé avec des find et l'opérateur []
Mais ayant des pointeurs à lui passé, j'ai pas envie de lui laisser créer par défaut les MeshesGroupes.
Voici quelques liens:
http://www.wxwidgets.org/manuals/sta...wxhashmap.html
http://www.wxwidgets.org/wiki/index....Text_Templates
http://www.sgi.com/tech/stl/hash_map.html
EDIT: zut j'aurais du mettre le sujet dans wxwidget c++ (désolé me suis trompé)
Partager