0

パラメーターに定数イテレーターを受け取る関数があり、その関数を再帰的に呼び出したいのですが、イテレーターを 1 つ増やします (イテレーター自体を変更する必要はありません)。

私が見つけた唯一の解決策は、反復子のコピーを作成し、このコピーを事前にインクリメントして、最終的に関数呼び出しのパラメーターとして渡すことでした。

func(const FowardIterator & i, const container & c) {
  // lot of very smart code

  FowardIterator next = i;

  ++next;
  func(next, c);
}

これを行う簡単な方法はありますか?一時イテレータを作成する必要はありませんか?

4

1 に答える 1

1

イテレータは非常に高速にコピーできる必要があるため、イテレータを受け入れる理由はまったくありませんconst&。値渡しは問題なく、関数の本体で反復子を明示的にコピーすることを避けることができます。

std::nextとはいえ、イテレータをコピーして、すべてを 1 ステップで進めるために使用することもできます。

func(std::next(i), c);
于 2012-10-18T17:46:51.400 に答える