Bonjour,
je cherche à créer une classe matrice dont le but est de faire le produit matrice vecteur, en c++ sans utiliser std::vector. Ci dessous le programme que j'ai fait, chez moi il compile, mais peut être qu'il y'a des erreurs que je n'ai pas vu. Ma question est: comment définir le produit d'un vecteur avec une matrice, ce qui me dérange c'est quelle taille donner à la matrice pour qu'elle soit considérée comme un vecteur? Je vous remercie par avance pour votre aide.
Code:#ifndef _MATRICE_HPP_ #define _MATRICE_HPP_ #include <algorithm> #include <iostream> class Matrice { private: int taille_; int **matrice_; public: //Déclaration et Définition d'un constructeur par défaut Matrice() : taille_(0), matrice_(0){}; //Déclaration d'un constructeur avec argument explicit Matrice (int n=0); //Déclaration d'un constructeur de copie Matrice(const Matrice& ref); //Déclaration d'un déstructeur ~Matrice(); //Déclaration de l'opérateur = Matrice operator=(const Matrice &); // Méthode d'accès à une valeur de la matrice int getTaille() const; // Méthode de modification de la taille de la matrice int getVal(int i, int j) const; //friend std :: ostream& operator<<(std :: ostream &ostr, const Matrice &m); //friend std :: istream& operator>>(std :: istream &is, Matrice &m); }; //Définition du constructeur avec argument Matrice :: Matrice(int n): taille_(n), matrice_(0) { //création de l'espace mémoire pour int** matrice_ de taille n matrice_=new int * [taille_]; for(int i=0; i<taille_; i++) matrice_[ i]=new int [taille_]; //on initialise les valeurs de la matrice à 0 for (int i=0; i<taille_; i++) { for (int j=0; j<taille_; j++) matrice_[ i][ j]=0; } } //Définition du constructeur de copie Matrice :: Matrice(const Matrice& ref): taille_(ref.taille_), matrice_(nullptr) { if(taille_ != 0) { matrice_ = new int*[taille_]; // for(size_t i=0; i<taille_;i++) matrice_[ i]=ref.matrice_[ i]; } } //Définition du destructeur pour éviter les problèmes de fuite de mémoire Matrice :: ~Matrice() { delete[] matrice_; matrice_ = nullptr; taille_ = 0; } //Définition de = Matrice Matrice :: operator=(const Matrice &m) { if(m.matrice_ != matrice_){ // garde contre "self assignment" // dealocation du *this delete [] matrice_; taille_ = 0; matrice_ = nullptr; if(m.taille_ != 0){ matrice_ = new int*[m.taille_]; taille_ = m.taille_; for(size_t i=0;i<taille_;i++) { matrice_[ i]=m.matrice_[ i]; } } } return *this; } //Définition de getTaille int Matrice :: getTaille() const { return taille_; } //Définition de getVal int Matrice :: getVal(int i, int j) const { return matrice_[ i][ j]; } #endif
-----