ベクトルやリストなど、順序付けられたコンテナ内の要素のドット積を実装するために、C++ stl 汎用アルゴリズムを使用する巧妙なワンライナーがあると確信しています。私はそれを覚えていないようです!
ファンシーな実装は次のようになります。
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;
}
私は車輪を再発明していて、これを行うためのより賢い方法があると思います.