Class matrix : comprend pas - C++ - Programmation
Marsh Posté le 02-08-2007 à 12:57:13
les floats sont les uns à la suite des autres, l'indice du float [i,j] est calculé et passé à l'opérateur [] (qui sors le float qui va bien à partir de l'indice)
Marsh Posté le 02-08-2007 à 13:02:51
Merci, Et n'importe quel compilateur nous assure que tous les float seront aligné en mémoire ? Ne vaudrait t-il pas mieux faire un tableau de 4x4 ?
Marsh Posté le 02-08-2007 à 13:38:50
Je trouve ça assez porc en fait comme codage, mais je suis loin d'être un expert.
Le code à l'avantage d'être compact et plus rapide qu'une gestion de tableaux. Si c'est une classe critique, la rapidité à sans doute primé devant la facilité de compréhension/la portabilité du code.
Je n'ai jamais vu de compilo ne pas mettre les trucs les uns à la suite des autres en tout cas.
Marsh Posté le 02-08-2007 à 15:03:20
Merci,
Oui c'est une classe critique, toutes les fonctions membres sont inline et c'est pour une moteur 3d.
Marsh Posté le 02-08-2007 à 15:42:25
vincent0 a écrit : Merci, Et n'importe quel compilateur nous assure que tous les float seront aligné en mémoire ? |
Il n'y a pas de garantie formelle. Je ne vois pas de raison pour un compilateur de ne pas le faire.
Citation : Ne vaudrait t-il pas mieux faire un tableau de 4x4 ? |
Si.
Marsh Posté le 02-08-2007 à 15:43:15
durkheim a écrit : Le code à l'avantage d'être compact et plus rapide qu'une gestion de tableaux. |
Tu as des mesures? Je ne vois a priori pas de raison.
Marsh Posté le 02-08-2007 à 15:47:45
Je pensais à une gestion de tableaux comme avec des vector, array, et autres "tableaux " (listes si tu préfères).
Après, je suis d'accord que pour une déclaration de tableau simple ce n'est pas évident, mais il y a forcément une raison, sinon il n'aurait pas redéfini l'opérateur. Peut être une optimisation du compilo?
Marsh Posté le 02-08-2007 à 15:48:49
#
const float& operator ()(std::size_t i, std::size_t j) const
#
{
#
return operator ()(i, j);
#
}
#
while (1); suffit
Marsh Posté le 02-08-2007 à 19:22:34
durkheim a écrit : |
si on est en 1978 oui, de nos jours, un bon vieux float[9] aurais suffit
ou std::vector
Marsh Posté le 02-08-2007 à 19:26:40
Joel F a écrit : |
En C++ en 78? Tu travaillais avec BS sur C with Classes à ATT?
Je doute qu'il y ait jamais eu beaucoup de différences entre le hack ci-dessus, un float[16] et un float[4][4].
Citation : ou std::vector |
Allocation dynamique garantie... voir la différence n'est pas invraisemblable.
Marsh Posté le 02-08-2007 à 19:30:32
Taz a écrit : # |
tiens exact
Marsh Posté le 02-08-2007 à 21:39:20
Un Programmeur a écrit : |
bon :
http://fr.wikipedia.org/wiki/Hyper [...] torique%29
Un Programmeur a écrit : |
Pour avoir bosser sur ce genre de bench pendant 4 ans ... c'ets assez négligable.
Par contre, le temps d'accés , c'est pas DU TOUT le même ordre de grandeur entre vector et []
Marsh Posté le 02-08-2007 à 12:48:13
Bonjour,
J'ai vu ceci dans un code source (simplifié) :
Comment fait-il pour aller récupérer la valeur de "a23" si l'ont fait Matrix(2, 3), je comprend pas dutout le code !
Merci d'avance...
Message édité par vincent0 le 02-08-2007 à 12:50:16