adjacent_difference
时间: 2023-04-25 20:03:01 浏览: 67
adjacent_difference是一个STL算法,用于计算一个序列中相邻元素的差值,并将结果存储在另一个序列中。例如,对于序列{1, 3, 5, 7, 9},使用adjacent_difference算法可以得到序列{1, 2, 2, 2, 2},其中每个元素都是相邻两个元素的差值。
相关问题
adjacent_difference用法
adjacent_difference 是一个 C++ 中的 STL 算法函数,用于计算一个范围内相邻元素的差值,并将结果存储在一个输出区间中。它的用法可以参考下面的示例代码:
```
#include <iostream>
#include <vector>
#include <numeric>
int main()
{
std::vector<int> data { 3, 1, 4, 1, 5, 9, 2, 6, 5, 3 };
std::vector<int> diff(data.size());
std::adjacent_difference(data.begin(), data.end(), diff.begin());
for (auto d : diff) {
std::cout << d << ' ';
}
std::cout << '\n';
return 0;
}
```
这段代码输出的结果将是:
```
3 -2 3 -3 4 4 -7 4 -2 -2
```
其中,diff 向量存储了与 data 向量中相邻元素的差值,第一个元素是 data[0],其余元素是 data[i] - data[i-1]。
c++的numeric
C++标准库中的numeric头文件提供了一些数值算法,包括对容器中元素进行求和、内积、部分和、差异等操作。
其中常用的函数有:
- accumulate:对容器中的元素进行累加或累乘
- inner_product:计算两个容器的内积
- partial_sum:计算部分和
- adjacent_difference:计算相邻元素的差异
示例代码:
```c++
#include <iostream>
#include <numeric>
#include <vector>
int main() {
std::vector<int> v{1, 2, 3, 4, 5};
int sum = std::accumulate(v.begin(), v.end(), 0);
std::cout << "Sum: " << sum << std::endl;
std::vector<int> v1{1, 2, 3};
std::vector<int> v2{4, 5, 6};
int inner_product = std::inner_product(v1.begin(), v1.end(), v2.begin(), 0);
std::cout << "Inner product: " << inner_product << std::endl;
std::vector<int> v3{1, 2, 3, 4, 5};
std::vector<int> partial_sum(v3.size());
std::partial_sum(v3.begin(), v3.end(), partial_sum.begin());
for (auto i : partial_sum) {
std::cout << i << " ";
}
std::cout << std::endl;
std::vector<int> v4{1, 2, 4, 7, 11};
std::vector<int> adjacent_difference(v4.size()); std::adjacent_difference(v4.begin(), v4.end(), adjacent_difference.begin());
for (auto i : adjacent_difference) {
std::cout << i << " ";
}
std::cout << std::endl;
return 0;
}
```
输出结果:
```
Sum: 15
Inner product: 32
1 3 6 10 15
1 1 2 3 4
```
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)