Prodotto Dot in C ++ utilizzando algoritmi generici
-
10-07-2019 - |
Domanda
I & # 180; sono sicuro che & # 180; s sia un intelligente one-liner che utilizza gli algoritmi generici C ++ stl per implementare il prodotto punto degli elementi in qualsiasi contenitore ordinato, come un vettore o un elenco. Don & # 180; t sembra non ricordarmelo!
L'implementazione di fantasia sarebbe:
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;
}
Penso che io & # 180; sto reinventando la ruota e che & # 180; sia un modo più intelligente per farlo.
Soluzione
Vedi std::inner_product
da <numeric>
.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow