std::basic_string<CharT,Traits,Allocator>::shrink_to_fit
void shrink_to_fit(); |
(до C++20) | |
constexpr void shrink_to_fit(); |
(с C++20) |
Запрашивает удаление неиспользуемой емкости.
Это необязательная просьба уменьшить capacity() до size(). Выполнение запроса зависит от реализации.
Если (и только если) происходит перераспределение, все указатели, ссылки и итераторы становятся недействительными.
Параметры
(нет)
Возвращаемое значение
(нет)
Сложность
(неопределённая) |
(до C++17) |
Линейная относительно размера строки. |
(с C++17) |
Примечания
В libstdc++, shrink_to_fit() недоступно в режиме C++98.
Пример
#include <iostream>
#include <string>
int main()
{
std::string s;
std::cout << "Size of std::string is " << sizeof s << " bytes\n"
<< "Default-constructed capacity is " << s.capacity()
<< " and size is " << s.size() << '\n';
for (int i = 0; i < 42; i++)
s.append(" 42 ");
std::cout << "Capacity after 42 appends is " << s.capacity()
<< " and size is " << s.size() << '\n';
s.clear();
std::cout << "Capacity after clear() is " << s.capacity()
<< " and size is " << s.size() << '\n';
s.shrink_to_fit();
std::cout << "Capacity after shrink_to_fit() is " << s.capacity()
<< " and size is " << s.size() << '\n';
}Возможный вывод:
GCC output: Size of std::string is 32 bytes Default-constructed capacity is 15 and size 0 Capacity after 42 appends is 240 and size 168 Capacity after clear() is 240 and size 0 Capacity after shrink_to_fit() is 15 and size 0 clang output (with -stdlib=libc++): Size of std::string is 24 bytes Default-constructed capacity is 22 and size is 0 Capacity after 42 appends is 191 and size is 168 Capacity after clear() is 191 and size is 0 Capacity after shrink_to_fit() is 22 and size is 0
Отчеты об ошибках
Следующие отчеты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применимо к | Поведение как опубликовано | Правильное поведение |
|---|---|---|---|
| LWG 755 | C++98 |
std::string не имело явных операций сжатия до размера |
предоставлено |
См. также
| возвращает количество символов (публичный член-функция) |
|
| возвращает количество символов, которые могут быть размещены в текущем выделенном хранилище (публичный член-функция) |
|
| изменяет количество хранимых символов (публичный член-функция) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/string/basic_string/shrink_to_fit