На этом шаге мы перечислим методы, используемые для получения итераторов.
Для выполнения указанных действий можно воспользоваться следующими методами:
iterator string::begin () const iterator string::begin () const
Для пустой строки вызов begin() эквивалентен вызову end().
iterator string::end ()
const_iterator string::end () const
Символ в позиции end() не определен, поэтому конструкции вида *s.end() приводят к непредсказуемым последствиям.
Для пустой строки вызов end() эквивалентен вызову begin().
reverse_iterator string::rbegin ()
const_reverse_iterator string::rbegin () const
Для пустой строки вызов rbegin() эквивалентен вызову rend().
reverse_iterator string::rend ()
const_reverse_iterator string::rend() const
Символ в позиции rend() не определен, поэтому конструкции вида *s.rend() приводят к непредсказуемым последствиям.
Для пустой строки вызов rend() эквивалентен вызову rbegin().
Обратные итераторы описаны на 219 шаге.
На следующем шаге мы рассмотрим поддержку распределителей памяти.