Bonjour,
j'ai le programme suivant qui défini une classe de matrice, mais je ne comprend pas l'utilisation de inline. À quoi sert "inline" exactement, et quelle est la syntaxe générale?
Voici le programme en question
Je vous remercie par avance.Code:#include <vector> #include <ostream> #include <iostream> // Définition d'une matrice template <typename T> class matrix_t{ protected: std::size_t nb_ligne; std::size_t nb_colonne; std::vector<std::vector<T> > data; public: matrix_t( const std::size_t & nb_ligne0 = 1, const std::size_t & nb_colonne0 = 1 ): nb_ligne(nb_ligne0), nb_colonne(nb_colonne0) { data.resize(nb_ligne); for(std::size_t i=0;i<nb_ligne;++i){ data[i].resize(nb_colonne); } } inline void set( const std::size_t & i, const std::size_t & j, const T & x ){ if(i >= get_nb_ligne()) throw; if(j >= get_nb_colonne()) throw; data[i][j] = x; } inline std::vector<T> & operator[]( const std::size_t & i ){ return data[i]; } inline const std::vector<T> & operator[]( const std::size_t & i ) const { return data[i]; } inline std::size_t get_nb_ligne() const{ return nb_ligne; } inline std::size_t get_nb_colonne() const{ return nb_colonne; } }; // Opérateur d'affichage d'une matrice template <typename T> std::ostream & operator<<(std::ostream & out,const matrix_t<T> & m){ const std::size_t & nb_lig = m.get_nb_ligne(), nb_col = m.get_nb_colonne(); for(std::size_t i=0;i<nb_lig;++i){ for(std::size_t j=0;j<nb_col;++j){ out << m[i][j] << '\t'; } out << std::endl; } return out; } // L'addition des matrices template <typename T1,typename T2> matrix_t<T1> operator+( const matrix_t<T1> & m1, const matrix_t<T2> & m2 ){ // vérifier que les deux matrices peuvent être sommées const std::size_t & nb_lig1 = m1.get_nb_ligne(), nb_col1 = m1.get_nb_colonne(), nb_lig2 = m2.get_nb_ligne(), nb_col2 = m2.get_nb_colonne(); if(nb_lig1 != nb_lig2 || nb_col1 != nb_col2) throw; matrix_t<T1> m(nb_lig1,nb_col1); // Aij = Bij + Cij for(std::size_t i=0;i<nb_lig1;++i){ for(std::size_t j=0;j<nb_col1;++j){ m[i][j] = m1[i][j] + m2[i][j]; } } return m; } // Le produit des matrices template <typename T1,typename T2> matrix_t<T1> operator*( const matrix_t<T1> & m1, const matrix_t<T2> & m2 ){ // vérifier que les deux matrices peuvent être multipliées const std::size_t & nb_lig1 = m1.get_nb_ligne(), nb_col1 = m1.get_nb_colonne(), nb_lig2 = m2.get_nb_ligne(), nb_col2 = m2.get_nb_colonne(); if(nb_col1 != nb_lig2) throw; matrix_t<T1> m(nb_lig1,nb_col2); // Aik = sum_j(Bij * Cjk) for(std::size_t i=0;i<nb_lig1;++i){ for(std::size_t k=0;k<nb_col2;++k){ for(std::size_t j=0;j<nb_col1;++j){ m[i][k] += m1[i][j] * m2[j][k]; } } } return m; }
-----