Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "Vecteur.h"
- #include <cassert>
- #include <iostream>
- using namespace std;
- template<class T>
- Vecteur<T>::Vecteur(unsigned int dim, const T &values):
- m_dim( dim ),
- m_values( new T[m_dim] )
- {
- for(unsigned int i=0; i<m_dim; ++i)
- m_values[i] = values;
- }
- template<class T>
- Vecteur<T>::Vecteur(const Vecteur<T> &v):
- m_dim( v.m_dim ),
- m_values( new T[m_dim] )
- {
- for(unsigned int i=0; i<m_dim; ++i)
- m_values[i] = v.m_values[i];
- }
- template<class T>
- Vecteur<T>::~Vecteur()
- {
- delete [] m_values;
- }
- template<class T>
- Vecteur<T> &Vecteur<T>::operator=(const Vecteur<T> &v)
- {
- // utilisation du constructeur de copie
- Vecteur temp( v );
- // inversion des attributs m_values du Vecteur courante et du Vecteur temp
- std::swap(temp.m_values, m_values);
- return *this;
- }
- // retourne le vecteur somme des deux vecteurs passés en paramètre
- // /!\ les vecteurs passés en paramètre doivent être de même dimension
- template<class T>
- Vecteur<T> Vecteur<T>::operator+(const Vecteur<T> &v)
- {
- unsigned int dim = v.m_dim;
- assert( m_dim == dim );
- Vecteur<T> temp = Vecteur( dim );
- for(unsigned int i=0; i<dim; ++i)
- temp[i] = m_values[i]+v.m_values[i];
- return temp;
- }
- template<class T>
- T &Vecteur<T>::operator[](unsigned int i)
- {
- assert( i < m_dim );
- return m_values[i];
- }
- template<class T>
- T &Vecteur<T>::operator[](unsigned int i) const
- {
- assert( i < m_dim );
- return m_values[i];
- }
- // retourne la dimension du vecteur
- template<class T>
- unsigned int Vecteur<T>::dimensions(void) const
- {
- return m_dim;
- }
- // produit scalaire
- // /!\ les vecteurs passés en paramètre doivent être de même dimension
- template<class T>
- T operator*(const Vecteur<T> &v, const Vecteur<T> &w)
- {
- unsigned int dim = v.dimensions();
- assert( dim == w.dimensions() );
- T r = 0;
- for(unsigned int i=0; i<dim; ++i)
- r += v[i] * w[i];
- return r;
- }
- template<class T>
- std::ostream &operator<<(std::ostream &out, Vecteur<T> &v)
- {
- unsigned int dim = v.m_dim;
- out << "[";
- for(unsigned int i=0; i<dim-1; ++i)
- out << v.m_values[i] << ",";
- out << v.m_values[dim-1] << "]";
- return out;
- }
- template<class T>
- std::istream &operator>>(std::istream &in, Vecteur<T> &v)
- {
- unsigned int dim = v.m_dim;
- T t[dim];
- for(unsigned int i=0; i<dim; ++i)
- {
- std::cout << "coef " << i << " : ";
- in >> t[i];
- v.m_values[i] = t[i];
- }
- return in;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement