На этом шаге мы приведем общие сведения об использовании итераторов для строк.
Строка представляет собой упорядоченную последовательность символов. Соответственно в стандартную библиотеку C++ был включен интерфейс, позволяющий использовать строки как контейнеры STL.
В частности, вызовом функций строковых классов можно получить итераторы для перебора символов строки. Если вы еще не знакомы с итераторами, считайте, что это своего рода псевдоуказатели, ссылающиеся на отдельные символы строки (по аналогии с указателями, ссылающимися на отдельные символы С-строк). При помощи итераторов можно перебрать все символы строки. Для этого достаточно воспользоваться алгоритмами, входящими в стандартную библиотеку C++ или определяемыми пользователем. Например, вы можете отсортировать символы в строке, переставить их в обратном порядке или найти символ с максимальным значением.
Строковые итераторы относятся к категории итераторов произвольного доступа. Это означает, что строковые итераторы поддерживают произвольный доступ к символам и могут использоваться со всеми алгоритмами (смотри шаги 97 и 209). Как обычно, типы строковых итераторов (iterator, const_iterator и т. д.) определяются самим строковым классом. Конкретный тип зависит от реализации, но обычно строковые итераторы определяются в виде обычных указателей. На 215 шаге описаны проблемы, возникающие из-за различий между итераторами, реализованными в виде указателей, и итераторами, реализованными в виде классов.
Итераторы становятся недействительными при перераспределении памяти и при некоторых изменениях в данных, на которые они ссылаются. За подробностями обращайтесь к шагу 370.
На следующем шаге мы рассмотрим строковые функции для работы с итераторами.