다음을 통해 공유


inner_product

Element-wise 제품 두 범위의 합을 계산 하 고 지정 된 초기 값으로 더하거나 계산 결과의 일반화 된 프로시저 합계 및 제품 이항 연산으로 다른 지정 된 이항 연산으로 대체 됩니다.

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
    첫 번째 요소는 제품 내부 또는 일반화 된 내부 제품의 두 번째 범위와 계산 하는 첫 번째 범위에서 주소를 지정 하는 입력된 반복기입니다.

  • _Last1
    마지막 요소는 제품 내부 또는 일반화 된 내부 제품의 두 번째 범위와 계산 하는 첫 번째 범위에서 주소를 지정 하는 입력된 반복기입니다.

  • _First2
    첫 번째 요소는 제품 내부 또는 일반화 된 내부 제품의 첫 번째 범위와 계산 하는 두 번째 범위의 주소는 입력된 반복기입니다.

  • _Val
    내부 제품 또는 일반화 된 내부 제품 사이의 범위에 추가 되는 초기 값입니다.

  • _Binary_op1
    대체 제품 내부 작업의 element-wise 제품에서 일반화의 내부 제품 적용 합 이항 연산.

  • _Binary_op2
    내부 제품 element-wise 작업의 대체는 이항 연산 내부 제품의 일반화에 곱합니다.

반환 값

첫 번째 멤버 함수 element-wise 제품의 합계를 반환 하 고 지정 된 초기 값을 추가 합니다.이 값의 범위에 대 한 I 및 bi를 반환:

_Val+ ( a1 * b1 ) + ( a2 * b2 ) +

by iteratively replacing _Val with _Val + (*ai * *bi ).

두 번째 멤버 함수를 반환합니다.

     _Val_Binary_op1 ( a1 _Binary_op2b1 ) _Binary_op1 ( a2 _Binary_op2b2 ) _Binary_op1

by iteratively replacing _Val with _Val _Binary_op1 (*ai _Binary_op2 *bi ).

설명

된다는 결과 잘 정의 된 범위의 경우에 비어 있을 때 초기 값 확인 _Val 이 반환 됩니다.이진 연산 연관 또는 비가 환 적 될 필요가 없습니다.범위에서 유효 해야 하 고 복잡 한 선형의 범위 크기입니다.이항 연산자의 반환 형식으로 변환 될 수 있어야 유형 클로저 반복 과정을 확인 합니다.

예제

// 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;
}

Output

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 ).

요구 사항

헤더: <numeric>

네임 스페이스: std

참고 항목

참조

inner_product (STL Samples)

표준 템플릿 라이브러리