目录

inner_product

描述 (Description)

它用于计算范围的累积内积,并返回累积init的结果与由first1和first2开始的两个范围的元素形成的对的内积。

声明 (Declaration)

以下是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 - 它迭代到序列中的初始和最终位置。

  • init - 它是累加器的初始值。

  • binary_op - 它是二进制操作。

  • binary_op2 - 它是二进制操作并采用两个元素。

返回值 (Return Value)

它返回累加init的结果和从first1和first2开始的范围内所有元素对的乘积。

异常 (Exceptions)

如果元素或迭代器上的任何操作抛出,它将抛出。

数据竞争 (Data races)

访问[first1,last1]范围内的元素。

例子 (Example)

在下面的示例中为std :: adjacent_difference。

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

输出应该是这样的 -

Default inner_product: 300
Functional operations: 52
Ccustom functions: 4
↑回到顶部↑
WIKI教程 @2018