18
  • 一部のメンバーを介して文字列内の位置 5 に反復子を設定できますfor(i = 0; i < 5; ++i) iterator++;か?
  • Iterator が与えられた場合、それを文字列の数値オフセットに変換するにはどうすればよいですか?
  • これが std::iterators で不可能な場合は、ブーストできますか?

イテレータ <-> オフセット

4

3 に答える 3

25

一部のメンバーを介して、イテレータを文字列の5番目の位置に設定できますか?

std::advanceを使用できます

std::advance(iterator, 5);

また

iterator += 5;

イテレータが与えられた場合、それを文字列の数値オフセットに変換するにはどうすればよいですか?

std::distanceを使用できます

std::distance(string.begin(), iterator);

また

iterator - string.begin()
于 2012-09-19T06:31:00.097 に答える
7

std :: stringイテレータは、+演算子を定義するランダムアクセスイテレータです。を使用して、イテレータを位置5に設定できますbegin(str) + 5。オフセットはstd::distance、ランダムアクセスイテレータに-operatorを使用して計算できます。

于 2012-09-19T06:32:11.950 に答える
3
  1. あなたが使用することができます iterator + 4
  2. これを試して:iterator - str.begin();
  3. イテレータには演算子+andがあり-ます。これらを使用して、反復子とオフセットの間で変換できます。
于 2012-09-19T06:38:13.843 に答える