Bonjour à tous,
J'ai un tableau contenant des "unsigned char", composé de groupes.
Je connais la taille d'un groupe, ainsi que le nombre de groupe contenu dans mon tableau.
A partir de là, je voudrais faire un second tableau d'unsigned char en éliminant les doublons, puis un tableau d'unsigned int pour indicer les groupes.
Par exemple:
Ici, on par sur un tableau composé de 3 groupes de 3. Le groupe 1 et le groupe 3 sont similaires.
Donc le nouveau tableau ne contient que 2 groupes, et le tableau d'indices va référencer le premier groupe, puis le deuxième et pour finir encore le premier.
Sachant qu'on aura des tableau d'environ 3000 groupes de 16 à 20 "unsigned char", j'ai besoin de faire les choses de manière propre et optimisée.
Mais du code comme ça ça me paraît trop superficiel pour être performant :s
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
29
30
31
32
33 // Parcours du tableau d'origine groupe par groupe. for(unsigned int uiOriginGroup = 0, uiOriginGroup < uiTotalOriginGroup, uiOriginGroup++) { // Pour chaque groupe, on va chercher s'il n'est pas déjà "recensé" int uiIndex = -1; for(unsigned int uiNewGroup = 0; uiNewGroup < uiNewGroupCount; uiNewGroup++ { bool bTrouve = true; for(unsigned int uiGroupComponent = 0; uiGroupComponent < uiGroupComponentCount; uiGroupComponent++) { if(TableauOrigin[uiNewGroup * uiGroupComponentCount + uiGroupComponent] != TableauNew[uiNewGroup * uiGroupComponentCount + uiGroupComponent] { bTrouve = false; break; } } if(bTrouve) { iIndex = uiNewGroup; break; } } if(uiIndex > -1) // On ajoute juste l'indice au tableau des indices else { // On rajoute un nouveau groupe dans la nouvelle table des groupes // On positione l'indices (ou la taille de la nouvelle table - 1) } }
Est-ce que quelqu'un peut me donner une approche différente vers laquelle je pourrais me tourner?
Merci beaucoup
A bientôt
Partager