Bonjour
Je cherche à manipuler très rapidement un tableau 2D dont la colonne 1 serait fixe et la 2d dynamique -dans l'idéal-, de manière à associer à une mollécule (col 1) un nombre variable de particules (col 2), ajoutées et supprimées à la volée...
Cette opération ayant lieu de nombreuses fois et pendant d'autres calculs, tels que des collisions 3D gérées par un moteur de physique, je me suis tourné vers Boost en pensant gagner en performances.
Auriez-vous quelques conseils ?
A quel point un tableau fixe est-il + rapide qu'un dynamique, quitte à laisser bcp de cases vides ?
Pour l'instant j'essaie d'utiliser un multi_array , mais je n'arrive pas à ajouter correctement des valeurs à un emplacement précis :
J'épluche encore la doc mais pourriez vous m'aider à trouver la formulation pour nextPos
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 typedef boost::multi_array<int, 2> array_type; typedef array_type::index index; int cl1 = 10; int cl2 = 50; array_type molles_A(boost::extents[cl1][cl2]); ... void ajouter(int idMol, int idA, int idB) { int nextPos = //? comment évaluer la position suivant le dernier élément ajouté ? molles_A[idMol][nextPos] = idA; molles_A[idMol][nextPos] = idB; } void supprimer(id) { for(index i = 0; i != cl1; ++i) for(index j = 0; j != cl2; ++j) if( molles_A[i][j] == id ) molles_A[i][j] = NULL; break; }
Que pensez vous de la manière de supprimer() un élément ?
merci
Partager