📅  最后修改于: 2023-12-03 14:39:53.056000             🧑  作者: Mango
在 C++ STL 中,数字标头包含了一系列常用的算法函数,如求和、平均值、最大/小值等。在本文中,我们将学习集合2部分的三个函数:adjacent_difference()
、inner_product()
和iota()
。
adjacent_difference()
函数可以用来计算相邻元素之间的差值,并将结果存储到另一个容器中。其原型如下:
template <class InputIt, class OutputIt>
OutputIt adjacent_difference(InputIt first, InputIt last, OutputIt d_first);
参数解释:
first
:要计算的容器的起始迭代器last
:要计算的容器的终止迭代器d_first
:存储结果的容器的起始迭代器示例:
#include <iostream>
#include <numeric>
#include <vector>
using namespace std;
int main() {
vector<int> v = {1, 2, 4, 8, 16};
vector<int> result(v.size());
adjacent_difference(v.begin(), v.end(), result.begin());
for (auto i : result) {
cout << i << " ";
}
cout << endl;
return 0;
}
输出:
1 1 2 4 8
inner_product()
函数可以计算两个容器的内积。其原型如下:
template<class InputIt1, class InputIt2, class T>
T inner_product(InputIt1 first1, InputIt1 last1,
InputIt2 first2, T value);
参数解释:
first1
:第一个容器的起始迭代器last1
:第一个容器的终止迭代器first2
:第二个容器的起始迭代器value
:内积的初始值示例:
#include <iostream>
#include <numeric>
#include <vector>
using namespace std;
int main() {
vector<int> v1 = {1, 2, 3};
vector<int> v2 = {4, 5, 6};
cout << inner_product(v1.begin(), v1.end(), v2.begin(), 0) << endl;
return 0;
}
输出:
32
iota()
函数可以用来给容器中的元素赋值,其值为一个递增的序列。其原型如下:
template <class ForwardIt, class T>
void iota(ForwardIt first, ForwardIt last, T value);
参数解释:
first
:容器的起始迭代器last
:容器的终止迭代器value
:要赋予的起始值示例:
#include <iostream>
#include <numeric>
#include <vector>
using namespace std;
int main() {
vector<int> v(5);
iota(v.begin(), v.end(), 1);
for (auto i : v) {
cout << i << " ";
}
cout << endl;
return 0;
}
输出:
1 2 3 4 5
感谢阅读本篇文章,希望能够帮助你更好地理解 C++ STL 中数字标头集合2中的三个函数。