Boost logo

Ublas :

From: e r (erwann.rogard_at_[hidden])
Date: 2007-09-04 15:54:52


e r wrote:
> hi,
> what's the best way to achieve x*=y? where x and y are vectors (or
> proxies) of identical size? although i wrote a function (below) i'm
> hoping there's already some ublas related facility to do so that someone
> would kindly want to share.
>
> template<typename D> class Op_product_term_by_term{
> public:
> Op_product_term_by_term(D& dest):iter(dest.begin()),end(dest.end()){};
> void operator()(double elem);
> private:
> typename D::iterator iter;
> typename D::iterator end;
> };
> template<typename D> void Op_product_term_by_term<D>::operator()(double
> elem){
> if(iter<end){
> *(iter++)*=elem;
> }else{
> throw;
> };
> };
> template<typename D, typename B> void product_term_by_term(D& dest,const
> B& by){
> if(dest.size()==by.size()){
> for_each(by.begin(),by.end(),Op_product_term_by_term<D>(dest));
> }else{
> throw;
> };
> };
>
> ps: should i post this kind of ad in boost.ublas or boost.users?
>
> _______________________________________________
> ublas mailing list
> ublas_at_[hidden]
> http://lists.boost.org/mailman/listinfo.cgi/ublas
>
at the very least i should have suggested:

std::transform(vec.begin(),vec.end(),dest.begin(),dest.begin(),std::multiply<double>())