c++ - 使用通用算法的 C++ 中的点积

标签 c++ generics dot-product

我确信有一个聪明的单行代码使用 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> .

关于c++ - 使用通用算法的 C++ 中的点积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/312077/

相关文章:

c++ - Go 编程语言会取代 C++ 吗?

c++ - 函数的多重声明

C# 泛型,约束特定结构

java - Java 泛型的乐趣

python - Numpy:带最大值而不是总和的点积

python - Pandas 获得最高点积的索引

python - 通过删除数组副本来提高 Numpy 点性能

c++ - tr1::randgen() 上的竞争条件,即使使用 #pragma omp critical

C++ 滚动字符数组

c# - 使用泛型和隐式转换进行重载解析