-1
我想在数组中找到前两个相邻的邻居并将迭代器返回到第一个。在下面的代码中,写下“ForwardIterator next = ++ first;”并没有给出我想要的结果,但它看起来是正确的。另一方面,写“ForwardIterator next = first; ++ next;”工作正常。那么,我错过了什么?迭代器和增量运算符
template<class ForwardIterator>
ForwardIterator MyAdjacent(ForwardIterator first, ForwardIterator last)
{
ForwardIterator next = ++first;
while (first != last)
{
if (*first == *next) break;
else
++first;
++next;
}
return first;
}
您是否意识到'next = ++ first'会突变'first'?在这段代码中'* first == * next'应该总是成立。 –
这不是你的代码的问题,但是'++ next'在你的'else'下缩进的事实实际上并不会使它落在你的'else'之下。 – Barry
您的缩进非常混乱。 ++下;应该与if/else一致。另外,我建议保持一致性,例如,在'if'之后的'break'就像'++ first'在else之后的行中一样。 –