next up previous contents
Next: Fonctions P1 Up: Structures de données Previous: Structures de données

La Classe Vector

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.



Pironneau Olivier
Jeudi 12 mars 1998 16:24:39