24 Strings library [strings]

24.3 String classes [string.classes]

24.3.2 Class template basic_­string [basic.string]

24.3.2.4 basic_­string capacity [string.capacity]

size_type size() const noexcept;

Returns: Подсчет количества символьных объектов, находящихся в данный момент в строке.

Complexity: Постоянное время.

size_type length() const noexcept;

Returns: size().

size_type max_size() const noexcept;

Returns: Максимально возможное количество символьных объектов, которые могут храниться в basic_­string.

Complexity: Постоянное время.

void resize(size_type n, charT c);

Throws: length_­error если n > max_­size().

Effects: Изменяет длину строки, обозначенной *this следующим образом:

  • Если n <= size()функция заменяет строку, обозначенную знаком, *this строкой длины n , элементы которой являются копией начальных элементов исходной строки, обозначенной *this.

  • Если n > size(), функция заменяет строку, обозначенную *this с помощью, строкой длины n , первые size() элементы которой являются копией исходной строки, обозначенной с помощью *this, а остальные элементы которой инициализируются c.

void resize(size_type n);

Effects: Как будто мимо resize(n, charT()).

size_type capacity() const noexcept;

Returns: Размер выделенного хранилища в строке.

void reserve(size_type res_arg=0);

Функция-член reserve() - это директива, информирующая basic_­string объект о запланированном изменении размера, чтобы он мог соответствующим образом управлять распределением хранилища.

Effects: После тогоreserve(), capacity() больше или равен аргумент reserve. [ Note: Вызов reserve() с res_­arg аргументом, меньшим чем capacity() , по сути, является необязательным запросом на сжатие. Обращение с помощью res_­arg <= size() по сути является необязательным запросом на усадку по размеру. ]end note

Throws: length_­error если res_­arg > max_­size().227

void shrink_to_fit();

Effects: shrink_­to_­fit является необязательным запросом для сокращения capacity() до size(). [ Note: Запрос не является обязывающим, чтобы дать свободу для оптимизации, зависящей от реализации. ] Он не увеличивается , но может уменьшаться , вызывая перераспределение. end note capacity() capacity()

Complexity: Линейный по размеру последовательности.

Remarks: Перераспределение делает недействительными все ссылки, указатели и итераторы, относящиеся к элементам в последовательности, а также к итератору, прошедшему конец. Если перераспределения не происходит, они остаются в силе.

void clear() noexcept;

Effects: Ведет себя так, как будто функция вызывает:

erase(begin(), end());

bool empty() const noexcept;

Returns: size() == 0.

reserve() использования, allocator_­traits<Allocator>​::​allocate() которые могут вызвать соответствующее исключение.