¿Le resultó útil esta página?
Sus comentarios sobre este contenido son muy importantes. Háganos saber su opinión.
¿Tiene comentarios adicionales?
Caracteres restantes: 1500
inner_product
Collapse the table of content
Expand the table of content
Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

inner_product

Calcula la suma del producto mejor elemento de dos intervalos y la agrega a un valor inicial especificado o calcula el resultado de un procedimiento general donde la suma y operaciones binarias del producto se reemplazan con otras operaciones binarias especificadas.

template<class InputIterator1, class InputIterator2, class Type>
   Type inner_product(
      InputIterator1 _First1, 
      InputIterator1 _Last1,
      InputIterator2 _First2, 
      Type _Val
   );

template<class InputIterator1, class InputIterator2, class Type,
   class BinaryOperation1, class BinaryOperation2>
   Type inner_product(
      InputIterator1 _First1, 
      InputIterator1 _Last1,
      InputIterator2 _First2, 
      Type _Val, 
      BinaryOperation1 _Binary_op1, 
      BinaryOperation2 _Binary_op2
   );

_First1

Un iterador de entrada que dirige el primer elemento en el primer intervalo cuyo producto interno o producto interno generalizado con el segundo intervalo se calculado.

_Last1

Un iterador de entrada que dirige el último elemento en el primer intervalo cuyo producto interno o producto interno generalizado con el segundo intervalo se calculado.

_First2

Un iterador de entrada que dirige el primer elemento del segundo intervalo cuyo producto interno o producto interno generalizado con el primer intervalo se calculado.

_Val

Un valor inicial a que el producto interno o el producto interno generalizado entre los intervalos debe agregarse.

_Binary_op1

La operación binaria que reemplaza la operación de producto interno de suma aplicadas a los productos sabios elemento en la generalización del producto interno.

_Binary_op2

La operación binaria de la que reemplaza la operación sabia elemento de producto interno se multiplica en la generalización del producto interno.

La primera función miembro devuelve la suma de los productos sabios elemento y agrega a él el valor inicial especificado. En los intervalos de valores aiy el BI, devuelve:

_Val + ( en1 * b)1 + ( en2 * b)2 +

iterativo reemplazando _Val con _Val + (*ai * *b)i .

La segunda función miembro devuelve:

      _Val _Binary_op1 (1 un _Binary_op2 b)1 _Binary_op1 (2 un _Binary_op2 b)2 _Binary_op1

iterativo reemplazando _Val con _Val _Binary_op1 (*b)i de *a _Binary_op2i .

El valor inicial garantiza que haya un resultado bien definido cuando el intervalo está vacío, en cuyo caso se devuelve _Val . Las operaciones binarias no necesitan ser asociativas o conmutativas. El intervalo debe ser válido y complejidad es lineal al tamaño del intervalo. El tipo de valor devuelto del operador binario debe poder convertirse a Tipo garantizar el cierre durante la iteración.

// numeric_inner_prod.cpp
// compile with: /EHsc
#include <vector>
#include <list>
#include <numeric>
#include <functional>
#include <iostream>

int main()
{
   using namespace std;

   vector <int> v1, v2(7), v3(7);
   vector <int>::iterator iter1, iter2, iter3;

   int i;
   for (i = 1; i <= 7; i++)
   {
      v1.push_back(i);
   }

   cout << "The original vector v1 is:\n ( " ;
   for (iter1 = v1.begin(); iter1 != v1.end(); iter1++)
      cout << *iter1 << " ";
   cout << ")." << endl;

   list <int> l1, l2(7);
   list <int>::iterator lIter1, lIter2;

   int t;
   for (t = 1; t <= 7; t++)
   {
      l1.push_back(t);
   }

   cout << "The original list l1 is:\n ( " ;
   for (lIter1 = l1.begin(); lIter1 != l1.end(); lIter1++)
      cout << *lIter1 << " ";
   cout << ")." << endl;

   // The first member function for the inner product
   int inprod;
   inprod = inner_product(v1.begin(), v1.end(), l1.begin(), 0);

   cout << "The inner_product of the vector v1 and the list l1 is: "
        << inprod << "." << endl;

   // Constructing a vector of partial inner_products between v1 & l1
   int j = 0, parinprod;
   for (iter1 = v1.begin(); iter1 != v1.end(); iter1++) {
      parinprod = inner_product(v1.begin(), iter1 + 1, l1.begin(), 0);
      v2[j] = parinprod;
      j++;
   }

   cout << "Vector of partial inner_products between v1 & l1 is:\n ( " ;
   for (iter2 = v2.begin(); iter2 != v2.end(); iter2++)
      cout << *iter2 << " ";
   cout << ")." << endl << endl;

   // The second member function used to compute
   // the product of the element-wise sums
   int inprod2;
   inprod2 = inner_product (v1.begin(), v1.end(),
      l1.begin(), 1, multiplies<int>(), plus<int>());

   cout << "The sum of the element-wise products of v1 and l1 is: "
        << inprod2 << "." << endl;

   // Constructing a vector of partial sums of element-wise products
   int k = 0, parinprod2;
   for (iter1 = v1.begin(); iter1 != v1.end(); iter1++)
   {
      parinprod2 =
         inner_product(v1.begin(), iter1 + 1, l1.begin(), 1,
         multiplies<int>(), plus<int>());
      v3[k] = parinprod2;
      k++;
   }

   cout << "Vector of partial sums of element-wise products is:\n ( " ;
   for (iter3 = v3.begin(); iter3 != v3.end(); iter3++)
      cout << *iter3 << " ";
   cout << ")." << endl << endl;
}

The original vector v1 is:
 ( 1 2 3 4 5 6 7 ).
The original list l1 is:
 ( 1 2 3 4 5 6 7 ).
The inner_product of the vector v1 and the list l1 is: 140.
Vector of partial inner_products between v1 & l1 is:
 ( 1 5 14 30 55 91 140 ).

The sum of the element-wise products of v1 and l1 is: 645120.
Vector of partial sums of element-wise products is:
 ( 2 8 48 384 3840 46080 645120 ).

Encabezado: <numérico>

Espacio de nombres: std

Mostrar:
© 2015 Microsoft