Метод shrink_to_fit
Метод shrink_to_fit класса string уменьшает
зарезервированную ёмкость строки (capacity) до её текущего
размера (size). Это позволяет освободить память, которая была
выделена заранее, но в данный момент не используется.
Метод не принимает параметров и не изменяет содержимое строки.
Метод не гарантирует, что ёмкость станет ровно равной размеру:
реализация может оставить некоторый запас. Тем не менее, вызов
shrink_to_fit является запросом на уменьшение памяти
и обычно приводит к перераспределению буфера строки.
Синтаксис
str.shrink_to_fit()
Пример
Давайте создадим строку, зарезервируем под неё много памяти,
а затем вызовем shrink_to_fit и посмотрим, как
изменится ёмкость:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str = "abcde";
str.reserve(100);
cout << "size: " << str.size() << endl;
cout << "capacity before: " << str.capacity() << endl;
str.shrink_to_fit();
cout << "capacity after: " << str.capacity() << endl;
return 0;
}
Результат выполнения кода:
"size: 5"
"capacity before: 100"
"capacity after: 5"
Пример
Давайте удалим часть символов из строки, а затем вызовем
shrink_to_fit, чтобы освободить память, которая больше
не нужна:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str = "12345";
str.reserve(50);
str.erase(2);
cout << "str: " << str << endl;
cout << "size: " << str.size() << endl;
cout << "capacity before: " << str.capacity() << endl;
str.shrink_to_fit();
cout << "capacity after: " << str.capacity() << endl;
return 0;
}
Результат выполнения кода:
"str: "12""
"size: 2"
"capacity before: 50"
"capacity after: 2"