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

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

итераторы <-> Смещения

14

Решение

Могу ли я установить итератор в положение 5 в строке с помощью какого-либо члена

Ты можешь использовать станд :: авансовый

std::advance(iterator, 5);

или же

iterator += 5;

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

Ты можешь использовать станд :: расстояние

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

или же

iterator - string.begin()
19

Другие решения

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

5

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