我试图在数组中找到前两个相邻的邻居并将迭代器返回到第一个邻居。在下面的代码中,先编写" ForwardIterator next = ++; "没有给出我想要的结果,但它似乎是正确的。另一方面,写下" ForwardIterator next = first; ++下; "工作良好。那么,我错过了什么?
bool result = array.Take(array.Length / 2).Zip(array.Reverse(), (x,y) => x - y).Sum() == 0;
答案 0 :(得分:2)
ForwardIterator next = ++first;
会修改first
,因此next
将始终等于first
。相反,尝试:
ForwardIterator next = std::next(first);
这将为您提供递增的迭代器,而无需修改first
。您需要在文件顶部#include <iterator>
。见http://en.cppreference.com/w/cpp/iterator/next