Шаг 391.
Библиотека STL.
Строение строковых классов. Операции с размером и емкостью

    На этом шаге мы рассмотрим методы, используемые для работы с размером и емкостью строки.

    Для выполнения указанных операций имеются следующие методы:

Операции с размером

  size_type string::size() const
  size_type string::length() const
Обе функции возвращают текущее количество символов в строке.

    Применительно к строкам они являются эквивалентными.

    Для проверки пустых строк следует использовать функцию empty(), поскольку она может работать быстрее.

  bool string::empty() const
Проверяет, является ли строка пустой (то есть не содержит ни одного символа).

    Эквивалент (но может работать быстрее):

  string::size()==0
  size_type string::max_size() const
Возвращает максимальное количество символов, которые могут содержаться в строке.

    Если размер полученной строки превышает максимально допустимое количество символов, генерируется исключение length_error.

Операции с емкостью

  size_type string::capacity () const
Возвращает количество символов, которые могут храниться в строке без перераспределения памяти.
  void string::reserve ()
  void string::reserve (size_type num)

    Вторая форма резервирует внутреннюю память, по крайней мере, для num символов.

    Если num меньше текущей емкости, вызов интерпретируется как запрос на сокращение емкости, не обязательный к выполнению.

    Если num меньше текущего количества символов, вызов интерпретируется как запрос на сокращение емкости по текущему размеру, не обязательный к выполнению.

    При вызове без аргументов функция всегда интерпретируется как запрос на сокращение емкости по текущему размеру, не обязательный к выполнению.

    Емкость никогда не сокращается до величины, меньшей текущего количества символов.

    При каждом перераспределении памяти становятся недействительными все ссылки, указатели и итераторы. Кроме того, перераспределение требует времени, поэтому предварительный вызов reserve() повышает скорость работы программы и сохраняет ссылки, указатели и итераторы (подробнее смотри 369 шаг).

    На следующем шаге мы рассмотрим операции сравнения.




Предыдущий шаг Содержание Следующий шаг