Matrix template
salut
j ai mon code de C++ d un matrix template,je comprends pas bien comment ca marche , et je voulais une aide d explication sur ce code et une aide pour completer ca ,pour que ca soit fonctionnel sur tout genre de matrix ....merci
#ifndef __MATRIX_HEADER
#define __MATRIX_HEADER
#include <iostream>
template<typename T, int dim>
class matrix
{
public:
matrix(T data[][dim]);
matrix &operator+(const matrix &rhs);
matrix &operator*(const matrix &rhs);
template<typename U, int d>
friend std::ostream &operator<<(
std::ostream &stream, const matrix<U, d> &matrix);
template<typename U, int d>
friend std::istream &operator>>(
std::istream &stream, matrix<U, d> &matrix);
};
template<typename T, int dim>
std::ostream &operator<<(
std::ostream &stream, const matrix<T, dim> &matrix)
{}
#endif
j ai mon code de C++ d un matrix template,je comprends pas bien comment ca marche , et je voulais une aide d explication sur ce code et une aide pour completer ca ,pour que ca soit fonctionnel sur tout genre de matrix ....merci
#ifndef __MATRIX_HEADER
#define __MATRIX_HEADER
#include <iostream>
template<typename T, int dim>
class matrix
{
public:
matrix(T data[][dim]);
matrix &operator+(const matrix &rhs);
matrix &operator*(const matrix &rhs);
template<typename U, int d>
friend std::ostream &operator<<(
std::ostream &stream, const matrix<U, d> &matrix);
template<typename U, int d>
friend std::istream &operator>>(
std::istream &stream, matrix<U, d> &matrix);
};
template<typename T, int dim>
std::ostream &operator<<(
std::ostream &stream, const matrix<T, dim> &matrix)
{}
#endif
A voir également:
- Matrix template
- Matrix logiciel - Télécharger - Calcul & Conversion
- Intel matrix storage manager - Télécharger - Pilotes & Matériel
- Template sommaire word - Guide
- Matrix screen - Télécharger - Sécurité
- Capcut template - Télécharger - Montage & Édition
1 réponse
Je pense que ça devrait t'interesser :
http://www.commentcamarche.net/forum/affich-1907231-produit-matriciel-en-c
Si tu as des questions n'hésite pas à repasser. Mais grosso modo le concept des template c'est passer un ou plusieurs types en paramètres avec des < ... >. A la compilation, chaque fois qu'une fonction template est appelée avec un (des) types non rencontrés jusqu'ici, on compile la fonction.
C'est pour ça que :
- les fonctions template peuvent engendrer des codes longs à compiler, puisqu'on compile la fonction pour chaque type utilisé
- le code des fonctions template est dans le .hpp car on ne sait a priori pas pour quel type la fonction va être compilée. Il faut que toutes les fonctions templates soient dans le .hpp sinon ça ne marchera pas.
Toujours pour des raisons de compilation, si tu utilises un membre d'une structure avec un paramètre que tu as mis template. Par exemple
http://www.commentcamarche.net/forum/affich-1907231-produit-matriciel-en-c
Si tu as des questions n'hésite pas à repasser. Mais grosso modo le concept des template c'est passer un ou plusieurs types en paramètres avec des < ... >. A la compilation, chaque fois qu'une fonction template est appelée avec un (des) types non rencontrés jusqu'ici, on compile la fonction.
C'est pour ça que :
- les fonctions template peuvent engendrer des codes longs à compiler, puisqu'on compile la fonction pour chaque type utilisé
- le code des fonctions template est dans le .hpp car on ne sait a priori pas pour quel type la fonction va être compilée. Il faut que toutes les fonctions templates soient dans le .hpp sinon ça ne marchera pas.
Toujours pour des raisons de compilation, si tu utilises un membre d'une structure avec un paramètre que tu as mis template. Par exemple
#include <vector>
template <class T,class U>
class plop{
public:
int i;
std::vector<T> x;
plop(){
typename std::vector<T>::iterator z;
}
//...
};
int main(){
plop<int,float> p;
return 0;
}