Подтвердить что ты не робот

Std::string:: итератор для смещения и возврата

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

Итераторы ↔ Offsets

4b9b3361

Ответ 1

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

Вы можете использовать std:: advance

std::advance(iterator, 5);

или

iterator += 5;

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

Вы можете использовать std:: distance

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

или

iterator - string.begin()

Ответ 2

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

Ответ 3

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