#ifndef Vecteur_h
#define Vecteur_h
#include <iostream>
#include <vector>
class Vecteur
{
public :
Vecteur(int dimensions);
int taille() const;
float operator[](int i) const;
float & operator[](int i);
Vecteur const & operator+=(Vecteur const & autre);
Vecteur const & operator*=(int scalaire);
private :
std::vector<float> coordonnees;
};
Vecteur operator+(Vecteur const & v1, Vecteur const & v2);
Vecteur operator*(Vecteur const & v1, int scalaire);
Vecteur operator*(int scalaire, Vecteur const & v1);
bool operator==(Vecteur const & v1, Vecteur const & v2);
bool operator!=(Vecteur const & v1, Vecteur const & v2);
std::ostream & operator<<(std::ostream & stream, Vecteur const & v);
#include "Vecteur.h"
Vecteur(int dimensions)
: coordonnees(dimensions)
{
}
int Vecteur::taille() const
{
return coordonnees.size();
}
float Vecteur::operator[](int i) const
{
return coordonnees[i];
}
float & Vecteur::operator[](int i);
{
return coordonnees[i];
}
Vecteur const & Vecteur::operator+=(Vecteur const & autre)
{
for(int i=0; i<this->taille(); ++i)
{
coordonnees[i] += autre.coordonnees[i];
}
return *this;
}
Vecteur const & Vecteur::operator*=(int scalaire)
{
for(int i=0; i<this->taille(); ++i)
{
coordonnees[i] *= scalaire;
}
return *this;
}
Vecteur operator+(Vecteur const & v1, Vecteur const & v2)
{
Vecteur v = v1;
v+=v2;
return v;
}
Vecteur operator*(Vecteur const & v1, int scalaire)
{
Vecteur v = v1;
v *= scalaire;
return v;
}
Vecteur operator*(int scalaire, Vecteur const & v1)
{
return (v1*scalaire);
}
bool operator==(Vecteur const & v1, Vecteur const & v2)
{
bool egalite=true;
for(int i=0; i<this->taille() && egalite; ++i)
{
egalite = (v1.coordonnees[i] == v2.coordonnees[i]);
}
return egalite;
}
bool operator!=(Vecteur const & v1, Vecteur const & v2)
{
return !(v1==v2);
}
std::ostream & operator<<(std::ostream & stream, Vecteur const & v)
{
stream << "(";
for(int i=0; i<v.taille(); ++i)
{
stream << v[i];
if(i+1<v.taille()) stream << ", ";
}
stream << ")";
return stream;
}