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
который использует-оператор для итераторов произвольного доступа.
- вы можете использовать
iterator + 4
- попробуйте это:
iterator - str.begin();
- iterator есть оператор
+
и-
; вы можете использовать их для преобразования между итераторами и смещениями.