C++ Numeric::inner_product() 函数



C++ 的 std::numeric::inner_product() 函数用于返回两个范围的内积(点积)。它接受两个范围,并返回对应元素乘积的总和。它还接受一个初始值以及用于加法和乘法的自定义二元运算。

语法

以下是 std::numeric::inner_product() 函数的语法。

	
inner_product (InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, T init);
or
inner_product (InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, T init, BinaryOperation1 binary_op1, BinaryOperation2 binary_op2);

参数

  • first1, last1 − 指示序列中初始和最终位置的迭代器。
  • init − 累加器的初始值。
  • binary_op1,binary_op2 − 二元运算。

返回值

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

异常

如果元素或迭代器上的任何操作抛出异常,则抛出异常。

数据竞争

访问范围 [first1,last1) 中的元素。

示例 1

在以下示例中,我们将考虑 inner_product() 函数的基本用法。

#include <iostream>
#include <numeric>
#include <vector>
int main() {
   std::vector < int > x = {1,2};
   std::vector < int > x1 = {3,4};
   int y = std::inner_product(x.begin(), x.end(), x1.begin(), 0);
   std::cout << "Result : " << y << std::endl;
   return 0;
}

输出

以上代码的输出如下:

Result : 11

示例 2

考虑以下示例,我们将使用不同的初始值并观察输出。

#include <iostream>
#include <numeric>
#include <vector>
int main() {
   std::vector < int > a = {1,3};
   std::vector < int > b = {5,7};
   int x = std::inner_product(a.begin(), a.end(), b.begin(), 4);
   std::cout << "Result : " << x << std::endl;
   return 0;
}

输出

如果我们运行以上代码,它将生成以下输出:

Result : 30

示例 3

让我们看下面的例子,我们将使用自定义二元运算。

#include <iostream>
#include <numeric>
#include <vector>
int main() {
   std::vector < int > x = {2,6};
   std::vector < int > y = {4,8};
   int a = std::inner_product(x.begin(), x.end(), y.begin(), 10, std::minus < int > (), std::divides < int > ());
   std::cout << "Result : " << a << std::endl;
   return 0;
}

输出

以下是以上代码的输出:

Result : 10
numeric.htm
广告