使用通用算法在C ++中使用Dot产品
-
10-07-2019 - |
题
我<!>#180;我确定<!>#180; s是一个聪明的单行使用C ++ stl通用算法来实现任何有序容器中元素的点积,例如向量或列表。我只是<!>#180;似乎记得它!
花哨的实施将是:
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;
}
我认为我<!>#180; m重新发明轮子并且<!>#180;这是一种更聪明的方法。
解决方案
请参阅std::inner_product
中的 <numeric>
。
不隶属于 StackOverflow