我敢肯定,使用C++ STL通用算法的巧妙方法可以在任何有序容器(例如 vector 或列表)中实现元素的点积。我只是似乎不记得了!

好的实现是:

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;
}

我认为我正在重新发明轮子,并且有一种更聪明的方法可以做到这一点。

最佳答案

请参阅std::inner_product中的 <numeric>

09-05 23:37