Dot продукт в C ++ с использованием универсальных алгоритмов

StackOverflow https://stackoverflow.com/questions/312077

  •  10-07-2019
  •  | 
  •  

Вопрос

Я & # 180; уверен, что & # 180; это умная однострочная строка, использующая универсальные алгоритмы 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; заново изобретаю колесо и что & # 180; это более умный способ сделать это.

Это было полезно?

Решение

См. std::inner_product из <numeric>.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top