Bonjour.
J'ai un niveau de C++ "moyen" (je maitrise bien l'utilisation de classes, de librairies comme Qt, mais je n'ai aucune expérience dans la programmation "avancée" style métaprogrammation). Je travaille actuellement sur un programme de calcul pour un problème de physique et je me suis rendu compte que la manière dont je l'avais implanté la première fois ramais à mort car la classe contenant les algos de calcul faisait appel à des dizaines d'autres classes pas forcément optimisée et qu'au final ça ramait à mort.
J'ai donc pensé qu'il serait mieux de mettre toutes les données et variables temporaires dont la classe d'algo à besoin en variables membres pour éviter qu'elle fasse appel à des dizaines d'autres classes, et d'inliner certaines fonctions de cette classe. Est-ce la bonne solution ?
Ensuite voilà mon problème : du coup le nombre de variables membres "double" de la classe a exploser (je dois en être à plus de 100) et ça m'aiderait bien si je pouvais les répartir dans des conteneurs. C'est un peu complexe mais ma classe peut faire des calculs relatifs à 4 entités physiques du coup j'ai 4 fois les "mêmes" variables. Si je pouvais plutôt classer ça dans un conteneur type vector de taille 4, ce serait plus cool. L'autre problème est que certaines de ces variables sont des vecteurs physiques (type x,y,z) donc si je voulais classer ça proprement, je devrai faire un vector de vector.
Par exemple [0][0] serait la composante x pour la première entité physique, [0][1] la composante y, [0][2] la composante z, [1][0] la composante x pour la seconde entité physique etc...
Ma question est la suivante : avec quel conteneur travailler ?
A priori la taille ne variera pas (très petite taille) et j'ai besoin d'un accès optimisé (d'un point de vue temps) en lecture et en écriture de n'importe quelle composante.
(j'ai lu la faq, je comptais utiliser des vector, mais je ne suis pas certain que des vector de vector soient le mieux lorsque j'aurai besoin d'un double classement)
Précision : l'optimisation n'est pas super critique non plus, mais disons que si j'ai un facteur 2 sur le temps de calcul ça commence à devenir important.
Merci beaucoup
EDIT : petite précision : en fait je n'ai pas besoin d'utiliser des opération de tri etc... : c'est juste pour clarifier mon code et avoir 25 variables membres au lieu de 100...
Partager