Un vecteur de taille "size" est un tableau (donc une sous classe de A<float>) de valeurs sur lesquelles ont peut faire les opérations des espaces vectoriels: additions soustraction multiplication par un scalaire, produit scalaire, norme... L'algèbre des scalaires est pour nous les float.
class Vector: public A<float>{
public:
Vector(int ssize=0): A<float>(ssize){}
Vector(Vector& v): A<float>(v){}
Vector& operator = (const Vector& v1);
Vector& operator += (const Vector& v1);
Vector operator + (const Vector& v1)
{ Vector v2(*this); v2 += v1; return v2;}
Vector& operator -= (const Vector& v1);
Vector operator - (const Vector& v1) const;
Vector operator* (const float a) const;
friend Vector operator*(const float a, const Vector& v1);
Vector operator/ (const float a) const;
float scal(const Vector& v1) const;
};
//-----------------------------------------------------
Vector& Vector::operator= (const Vector& v1)
{
assert(size==v1.size);
for(int i=0; i<size;i++) cc[i] = v1.cc[i];
return *this;
}
//-----------------------------------------------------
Vector& Vector::operator+= (const Vector& v1)
{
for(int i=0; i<size;i++) cc[i] += v1.cc[i];
return *this;
}
//-----------------------------------------------------
Vector Vector::operator* (const float a) const
{
Vector v2(size);
for(int i=0; i<size;i++) v2.cc[i] = a * cc[i];
return v2;
}
//-----------------------------------------------------
Vector operator* (const float a, const Vector& v1)
{
Vector v2(v1.size);
for(int i=0; i<v1.size;i++) v2.cc[i] = a * v1.cc[i];
return v2;
}
//-----------------------------------------------------
float Vector::scal (const Vector& v1) const
{
float s=0;
for(int i=0; i<size;i++) s += v1.cc[i] * cc[i];
return s;
}
Notez les 2 fonctions operator* correspondant à a*v et v*a lorsque a est un float et v est un vecteur.