C++ 相邻的_差异与pre和next一起工作
我正在进行调试,并缩小了一个问题,如下所示。本质上,为什么第一行输出是斐波那契序列,而第二行输出都是0?上一个和下一个在这里做什么 为了您的方便,这里是最简单的代码C++ 相邻的_差异与pre和next一起工作,c++,C++,我正在进行调试,并缩小了一个问题,如下所示。本质上,为什么第一行输出是斐波那契序列,而第二行输出都是0?上一个和下一个在这里做什么 为了您的方便,这里是最简单的代码 #include <iostream> #include <vector> #include <numeric> using namespace std; int main(){ vector<int> a(10,1); adjacent_difference(a.begi
#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;
}
std::nextendent_difference
所做的第一件事是获取输入集的第一个值,并将其存储到输出集的第一个值中。这意味着在第二种情况下,b[0]
处的0
被写入b[1]
。然后在下一次传递时,它从输入集中获取下一个元素,在本例中为b[1]
,并将其添加到第一个元素中,这样就得到0+0
,并将其存储到b[2]
中。然后取b[2]
加上b[1]
,这也是0+0
,并将其存储到b[3]
中。整个集合都是这样,向量中只剩下0
。第一件事std::nexture_difference
就是获取输入集合的第一个值,并将其存储到输出集合的第一个值中。这意味着在第二种情况下,b[0]
处的0
被写入b[1]
。然后在下一次传递时,它从输入集中获取下一个元素,在本例中为b[1]
,并将其添加到第一个元素中,这样就得到0+0
,并将其存储到b[2]
中。然后取b[2]
加上b[1]
,这也是0+0
,并将其存储到b[3]
中。整个集合都是这样,向量中只剩下0
1 1 2 3 5 8 13 21 34 55
0 0 0 0 0
Process finished with exit code 0