РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
160 of 815 menu

Метод reserve

Метод reserve резервирует память для строки, чтобы избежать повторных перевыделений при добавлении символов. Сама строка при этом не изменяется - её длина остаётся прежней. В параметр мы передаём желаемый размер ёмкости в символах. Если переданное значение меньше текущей ёмкости, метод ничего не делает.

Ёмкость строки - это количество символов, которое строка может хранить без дополнительного перевыделения памяти. Ёмкость всегда больше или равна длине строки.

Синтаксис

str.reserve(count)

Пример

Давайте зарезервируем память под 10 символов и посмотрим, как изменится ёмкость строки:

#include <iostream> #include <string> using namespace std; int main() { string str = "abcde"; cout << "Length: " << str.length() << endl; cout << "Capacity before: " << str.capacity() << endl; str.reserve(10); cout << "Length: " << str.length() << endl; cout << "Capacity after: " << str.capacity() << endl; return 0; }

Результат выполнения кода:

"Length: 5" "Capacity before: 15" "Length: 5" "Capacity after: 15"

Длина строки не изменилась, а ёмкость осталась прежней, так как исходная ёмкость уже была больше 10.

Пример

Давайте зарезервируем память под 20 символов и посмотрим, как изменится ёмкость строки:

#include <iostream> #include <string> using namespace std; int main() { string str = "abcde"; cout << "Capacity before: " << str.capacity() << endl; str.reserve(20); cout << "Capacity after: " << str.capacity() << endl; return 0; }

Результат выполнения кода:

"Capacity before: 15" "Capacity after: 20"

Пример

Давайте используем reserve перед добавлением большого количества символов, чтобы избежать лишних перевыделений памяти:

#include <iostream> #include <string> using namespace std; int main() { string str; str.reserve(100); for (int i = 0; i < 5; i++) { str += "ab"; } cout << str << endl; cout << "Length: " << str.length() << endl; cout << "Capacity: " << str.capacity() << endl; return 0; }

Результат выполнения кода:

"ababababab" "Length: 10" "Capacity: 100"

Смотрите также

  • метод capacity,
    который возвращает ёмкость строки
  • метод shrink_to_fit,
    который уменьшает ёмкость до длины строки
  • метод resize,
    который изменяет размер строки
  • метод length,
    который возвращает длину строки
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить