Это, конечно, может быть применено к картам, с учетом творчески выбранных функторов, но inner_product
ожидает итераторы, в то время как vit->first
является const A
, а vit->second
является B
.
Например,,
std::map<int, double> m = {{1, 0.1}, {2, 0.2}};
typedef std::map<int, double>::value_type val_t;
double x = std::inner_product(m.begin(), m.end(), m.begin(), 0.0,
std::plus<double>(),
[](val_t lhs, val_t rhs){return lhs.first * rhs.second;});