Bonjour,
je dispose d'une classe générique Vector qui ressemble à ceci sans les fonctions membres :
J'aimerais modifier cette classe pour qu'elle admette deux formats de stockage possibles. Celui déjà défini dans ma classe est le format "dense" classique. J'aimerais également un format "creux" qui permette de ne stocker que les valeurs non nulles de mon vecteur. Par contre, je veux n'avoir qu'une seule et unique classe Vector. Si j'avais implémenté ma classe avec le format creux, j'aurais écrit ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 template<typename precision> class Vector { private: size_t _length; // longueur du vecteur precision *_values; // valeurs du vecteur };
Je me suis pas mal documenté sur les classes de trait et de politique parce que j'ai pensé que ça correspondait assez à ce que je souhaite. Cependant, je maîtrise encore assez mal ces techniques et j'ai besoin de votre aide. J'ai essentiellement deux questions :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 template<typename precision> class Vector { private: size_t _length; // longueur du vecteur size_t _nnz; // nombre de valeurs non nulles precision *_values; // valeurs (non nulles) du vecteur };
1. pour les formats de stockage, faut-il préférer des structures ou des classes?
2. comment gérer le fait que mon constructeur va être différent selon le format de stockage?
Pour un format dense, il me suffit de fournir la longueur souhaitée du vecteur pour initialiser mes données membres. Pour un format creux, je dois préciser la longueur ET le nombre de valeurs non nulles.
Merci pour votre aide!
Partager