Libreria numerica C ++ - inner_product

Descrizione

Viene utilizzato per calcolare il prodotto interno cumulativo dell'intervallo e restituisce il risultato dell'accumulo di init con i prodotti interni delle coppie formate dagli elementi di due intervalli a partire da first1 e first2.

Dichiarazione

Di seguito è la dichiarazione per std :: inner_product.

C ++ 98

template <class InputIterator1, class InputIterator2, class T>
   T inner_product (InputIterator1 first1, InputIterator1 last1,
                    InputIterator2 first2, T init);

template <class InputIterator1, class InputIterator2, class T,
          class BinaryOperation1, class BinaryOperation2>
   T inner_product (InputIterator1 first1, InputIterator1 last1,
                    InputIterator2 first2, T init,
                    BinaryOperation1 binary_op1,
                    BinaryOperation2 binary_op2);

C ++ 11

template <class InputIterator1, class InputIterator2, class T>
   T inner_product (InputIterator1 first1, InputIterator1 last1,
                    InputIterator2 first2, T init);
					
template <class InputIterator1, class InputIterator2, class T,
          class BinaryOperation1, class BinaryOperation2>
   T inner_product (InputIterator1 first1, InputIterator1 last1,
                    InputIterator2 first2, T init,
                    BinaryOperation1 binary_op1,
                    BinaryOperation2 binary_op2);
  • first, last - Iteratori alla posizione iniziale e finale in una sequenza.

  • init - È un valore iniziale per l'accumulatore.

  • binary_op - È un'operazione binaria.

  • binary_op2 - È un'operazione binaria e prende due elementi.

Valore di ritorno

Restituisce il risultato dell'accumulo di init e dei prodotti di tutte le coppie di elementi negli intervalli a partire da first1 e first2.

Eccezioni

Genera se viene generata una qualsiasi delle operazioni sugli elementi o gli iteratori.

Gare di dati

Si accede agli elementi nell'intervallo [first1, last1).

Esempio

Nell'esempio seguente per std :: adiacente_differenza.

#include <iostream>
#include <functional>
#include <numeric>

int myaccumulator (int x, int y) {return x-y;}
int myproduct (int x, int y) {return x+y;}

int main () {
   int init = 100;
   int series1[] = {20,30,40};
   int series2[] = {1,2,3};

   std::cout << "Default inner_product: ";
   std::cout << std::inner_product(series1,series1+3,series2,init);
   std::cout << '\n';

   std::cout << "Functional operations: ";
   std::cout << std::inner_product(series1,series1+3,series2,init,
      std::minus<int>(),std::divides<int>());
   std::cout << '\n';

   std::cout << "Ccustom functions: ";
   std::cout << std::inner_product(series1,series1+3,series2,init,
      myaccumulator,myproduct);
   std::cout << '\n';

   return 0;
}

L'output dovrebbe essere così -

Default inner_product: 300
Functional operations: 52
Ccustom functions: 4