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