gpt4 book ai didi

c++ - adjacent_difference 与 pre 和 next 一起工作

转载 作者:行者123 更新时间:2023-11-28 01:21:00 24 4
gpt4 key购买 nike

我正在调试过程中,缩小了一个问题的范围,如下所示。本质上,为什么第一行输出的是斐波那契数列,而第二行输出的全是0? prev 和 next 在这里究竟做什么?

为了您的方便,这里是极简代码

#include <iostream>
#include <vector>
#include <numeric>


using namespace std;
int main(){
vector<int> a(10,1);
adjacent_difference(a.begin(), std::prev(a.end()), std::next(a.begin()), std::plus<> {});
copy(a.begin(), a.end(), std::ostream_iterator<int> {std::cout, " "});
cout << endl;
vector<int> b{0,2,5,4,2};
adjacent_difference(b.begin(), std::prev(b.end()), std::next(b.begin()) , std::plus<> {});
copy(b.begin(), b.end(), std::ostream_iterator<int> {std::cout, " "});
return 0;
}

输出:

1 1 2 3 5 8 13 21 34 55 
0 0 0 0 0
Process finished with exit code 0

最佳答案

std::adjacent_difference 做的第一件事是获取输入集的第一个值并将其存储到输出集的第一个值中。这意味着在第二种情况下,b[0] 处的 0 被写入 b[1]。然后下一次传递它从输入集中获取下一个元素,在本例中为 b[1],并将其添加到第一个元素,因此您得到 0 + 0并将其存储到 b[2] 中。然后你将 b[2] 加上 b[1],这又是 0 + 0 并将其存储到 b[3 ]。整个集合都是这样, vector 中只剩下 0

关于c++ - adjacent_difference 与 pre 和 next 一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56283255/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com