[résolu] boost::ublas::vector_sparse

boost::ublas::vector_sparse [résolu] - C++ - Programmation

Marsh Posté le 09-09-2010 à 16:56:35    

Bonjour,
 
J'ai besoin d'utiliser des vecteurs creux pour faire quelques truc en math. J'ai donc pensé à boost::ublas et notamment la classe mapped_vector.
Toutefois j'ai besoin d'étendre la classe et je voudrais pouvoir exposer entre autres des operateurs comme +, * ...
Ceux-ci sont déjà utilisables sur mapped_vector, mais le retour est un boost::numeric::ublas::vector_binary<....> donc j'ai un peu de mal à les exposer.
 

Code :
  1. using namespace boost::numeric::ublas;  //juste pour l'exemple, pas taper
  2.   class MyVectorUBlas : private mapped_vector<double>{
  3.   public:
  4.     MyVectorUBlas(size_type n = 0):mapped_vector<Feature>(n){}
  5.     MyVectorUBlas(const mapped_vector<Feature>& mv):mapped_vector<Feature>(mv){}
  6.     MyVectorUBlas operator + (const MyVectorUBlas& v) const {
  7.        ???????
  8.     }
  9. };


 
Par exemple, le code suivant fonctionne, mais l'on doit bien pouvoir faire mieux.

Code :
  1. MyVectorUBlas operator + (const MyVectorUBlas& v) const{
  2.              MyVectorUBlas tmp = *this;
  3.              tmp += v;
  4.              return tmp;
  5.     }


 
J'espère m'être à peu près fait comprendre.
Merci d'avance


Message édité par Lan Wezel le 09-09-2010 à 17:36:50
Reply

Marsh Posté le 09-09-2010 à 16:56:35   

Reply

Marsh Posté le 09-09-2010 à 17:41:56    

Ca y est j'ai trouvé où sont définis les operators.
 

Code :
  1. MyVectorUBlas operator + (const MyVectorUBlas& v) const{
  2. return (MyVectorUBlas)boost::numeric::ublas::operator+(*this, v);
  3. }


 
Par contre, je n'ai toujours pas compris le truc suivant:

Code :
  1. mapped_vector<double> x(10), y(10);
  2. // init de x et de y
  3. mapped_vector<double> z = x + y; // fonctionne
  4. MyVectorUBlas w = x + y; // ne compile pas malgré le contructeur MyVectorUBlas(const mapped_vector<Feature>& );
  5. // le compilo rend erreur: conversion from ‘boost::numeric::ublas::vector_binary<...>' to non-scalar type ‘MyVectorUBlas' requested


 
Je sais pas pourquoi cela ne compile pas malgré le contructeur.


Message édité par Lan Wezel le 09-09-2010 à 17:44:47
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed