std::string::итератор для смещения и обратно

  • могу ли я установить итератор на позицию 5 в строке через какой-либо член или мне нужно сделать for(i = 0; i < 5; ++i) iterator++;?
  • учитывая итератор, как я могу преобразовать это в числовое смещение в строке?
  • Если это невозможно с помощью std:: итераторы могут увеличить это?

Итераторы Смещение

3 ответов


могу ли я установить итератор на позицию 5 в строке через некоторый член

можно использовать std:: advance

std::advance(iterator, 5);

или

iterator += 5;

учитывая итератор, как я могу преобразовать это в числовое смещение в струна?

можно использовать С std::расстояние

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

или

iterator - string.begin()

std::строковые итераторы-это итераторы произвольного доступа, которые определяют оператор+. Вы можете получить итератор в позицию 5 с помощью begin(str) + 5. Смещение можно вычислить через std::distance который использует-оператор для итераторов произвольного доступа.


  1. вы можете использовать iterator + 4
  2. попробуйте это: iterator - str.begin();
  3. iterator есть оператор + и -; вы можете использовать их для преобразования между итераторами и смещениями.