Bonjour,
j'ai créé en C++ les classes génériques suivantes :
- Complex<T>
- Vector<T>
La première permet de manipuler des nombres complexes et la seconde des vecteurs. J'aimerais associer à cette dernière une fonction amie permettant de calculer le produit scalaire "L2" entre deux vecteurs.
Mon problème est que cette opération fait intervenir la notion de conjugué dans le cas de vecteurs complexes. Or, je souhaite conserver l'aspect générique pour pouvoir faire des produits scalaires entre nombres réels.
J'ai réfléchi à plusieurs solutions :
1. ne pas utiliser les templates (i.e. faire des classes DoubleRealVector, DoubleComplexeVector, etc)
2. implémenter plusieurs produits scalaires (un pour les réels, un pour les complexes, etc)
3. faire une méthode "conj" pour les réels.
4. faire une classe Real<T>
A priori, je pencherais plutôt pour l'une des deux dernières solutions. J'aime beaucoup la dernière mais j'ai peur de perdre énormément en performances sur les opérations élémentaires (somme/différence/produit/division de float/double).
J'aimerais avoir votre avis et éventuellement d'autres solutions plus efficaces.
Merci d'avance
Partager