-1
最初の2つの隣接するネイバを配列内で検索し、最初のイテレータにイテレータを返します。以下のコードでは、 "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
あなたのインデントは非常に混乱しています。 ++ next; if/elseと一直線に並ばなければなりません。また、より一貫性を持たせることをお勧めします。たとえば、 '最初の'がelseの後の行にあるのと同じ方法で 'if'の後の行に '中断'を入れます。 –