gpt4 book ai didi

c++ - 打印从 adjacent_find 返回的两个相邻值

转载 作者:搜寻专家 更新时间:2023-10-31 00:45:16 25 4
gpt4 key购买 nike

我想打印前两个值,其中下一个值是当前值的两倍。

#include <iostream>
#include <deque>
#include <algorithm>
using namespace std;

bool doubled (int x, int y) { return x*2 == y; }

int main()
{
deque<int> di;
deque<int>::iterator diiter;

for (int i=0; i<=10; i+=2) di.insert(di.end(), i);

for (diiter = di.begin(); diiter != di.end(); ++diiter)
cout << *diiter << " ";
cout << endl;

diiter = adjacent_find(di.begin(), di.end(), doubled);
if (diiter != di.end()) {
cout << "found " << *diiter << " at " << distance(di.begin(), diiter)+1
<< " and " << *(++diiter) << " at " << distance(di.begin(), diiter)+1
<< endl;
}
}

输出是

0 2 4 6 8 10 
found 4 at 3 and 4 at 2

不是我所期望的,应该是:

0 2 4 6 8 10 
found 2 at 2 and 4 at 3

我的代码有什么问题?我不明白当我实际增加它时,第二个位置是如何从第一个位置减少的。感谢所有帮助。

最佳答案

您的程序给出了奇怪的结果,因为它没有考虑到函数参数的求值顺序(在本例中为运算符 <<)未指定

我的答案 here ,详细解释了问题,应该是一本好书。

您需要在单独的语句中cout它们。

 cout << "found " << *diiter;
cout << " at " << distance(di.begin(), diiter)+1;
cout << " and " << *(++diiter);
cout << " at " << distance(di.begin(), diiter)+1;
cout << endl;

This 运行良好并输出正确/所需的输出。

关于c++ - 打印从 adjacent_find 返回的两个相邻值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7073916/

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