std::inner_product
Calcula o produto interno de dois intervalos [first1, last1)
e [first2, first2 + (last1 - first1))
, com operações binárias personalizáveis, acumulando a partir de um valor inicial.
- Cabeçalho:
<numeric>
- Assinatura:
inner_product(InputIt1 first1, InputIt1 last1, InputIt2 first2, T init);
inner_product(InputIt1 first1, InputIt1 last1, InputIt2 first2, T init, BinaryOp1 op1, BinaryOp2 op2);
- Parâmetros:
- first1, last1 - Iteradores que definem o primeiro intervalo
[first1, last1)
de entrada. - first2 - Iterador para o início do segundo intervalo.
- init - Valor inicial da acumulação.
- op1 - Operação binária para acumulação (padrão: std::plus).
- op2 - Operação binária para multiplicação (padrão: std::multiplies).
- first1, last1 - Iteradores que definem o primeiro intervalo
- Retorno: Resultado do produto interno.
- Exceções: Depende das operações op1 e op2; a função em si não lança, a menos que op1 ou op2 o façam.
- Versão:
C++98
- Performance: O(N), onde N é o número de elementos no intervalo.
- Exemplo:
#include <numeric>
#include <vector>
#include <iostream>
int main() {
std::vector<int> v1 = {1, 2, 3};
std::vector<int> v2 = {4, 5, 6};
int result = std::inner_product(v1.begin(), v1.end(), v2.begin(), 0); // 1*4 + 2*5 + 3*6
std::cout << result << '\n'; // Imprime: 32
return 0;
}