views:

629

answers:

1

I´m sure there´s a clever one-liner using the C++ stl generic algorithms for implementing the dot product of the elements in any ordered container, such as a vector or list. I just don´t seem to remember it!

The fancy implementation would be:

template <class containerT>
typename containerT::value_type dot_product (const containerT& left, const containerT& right)
{
   assert(left.size()==right.size());
   containerT::value_type result = 0;
   for (containerT::const_iterator l_it = left.begin(), r_it = right.begin();
        l_it != left.end(); ++r_it,++l_it)
   {
      result += (*l_it) * (*r_it);
   }
   return result; 
}

I think that i´m reinventing the wheel and that there´s a more clever way to do this.

+4  A: 

See inner_product: http://www.sgi.com/tech/stl/inner_product.html

strager
short, sweet and to the point!
David Reis