Produto DOT em C ++ usando algoritmos genéricos
-
10-07-2019 - |
Pergunta
Tenho certeza de que há uma linha inteligente usando os algoritmos genéricos C ++ STL para implementar o produto DOT dos elementos em qualquer contêiner ordenado, como um vetor ou lista. Eu simplesmente não pareço me lembrar!
A implementação sofisticada seria:
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;
}
Eu acho que estou reinventando a roda e que há uma maneira mais inteligente de fazer isso.
Solução
Ver std::inner_product
a partir de <numeric>
.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow