std::basic_string<CharT,Traits,Allocator>:: shrink_to_fit
| Classes | ||||
|
(C++17)
|
||||
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
void
shrink_to_fit
(
)
;
|
(constexpr desde C++20) | |
Solicita la eliminación de capacidad no utilizada.
Es una solicitud no vinculante para reducir capacity() a size() . Depende de la implementación si la solicitud es cumplida.
Si (y solo si) tiene lugar una relocalización, todos los punteros, referencias e iteradores quedan invalidados.
Contenidos |
Complejidad
Lineal en el tamaño de la cadena.
Notas
En libstdc++,
shrink_to_fit()
está
no disponible
en modo C++98.
Ejemplo
#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'; }
Salida posible:
Salida GCC: 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 Salida clang (con -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
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.
| DR | Aplicado a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 755 | C++98 |
std::string
carecía de operaciones explícitas de reducción de capacidad
|
proporcionado |
| LWG 2223 | C++98 |
1. las referencias, punteros e iteradores no se invalidaban
2. no había requisito de complejidad |
1. pueden invalidarse
2. debe ser lineal |
Véase también
|
devuelve el número de caracteres
(función miembro pública) |
|
|
devuelve el número de caracteres que pueden almacenarse en el almacenamiento actualmente asignado
(función miembro pública) |
|
|
cambia el número de caracteres almacenados
(función miembro pública) |