std::basic_string<CharT,Traits,Allocator>:: shrink_to_fit
| Classes | ||||
|
(C++17)
|
||||
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
void
shrink_to_fit
(
)
;
|
(constexpr depuis C++20) | |
Demande la suppression de la capacité inutilisée.
Il s'agit d'une requête non-contraignante pour réduire la capacity() à la size() . L'implémentation détermine si cette requête est satisfaite.
Si (et seulement si) une réallocation a lieu, tous les pointeurs, références et itérateurs sont invalidés.
Table des matières |
Complexité
Linéaire dans la taille de la chaîne.
Notes
Dans libstdc++,
shrink_to_fit()
est
non disponible
en mode C++98.
Exemple
#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'; }
Sortie possible :
Sortie 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 Sortie clang (avec -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
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Appliqué à | Comportement tel que publié | Comportement correct |
|---|---|---|---|
| LWG 755 | C++98 |
std::string
manquait d'opérations explicites de réduction de capacité
|
fourni |
| LWG 2223 | C++98 |
1. les références, pointeurs et itérateurs n'étaient pas invalidés
2. il n'y avait pas d'exigence de complexité |
1. ils peuvent être invalidés
2. doit être linéaire |
Voir aussi
|
renvoie le nombre de caractères
(fonction membre publique) |
|
|
renvoie le nombre de caractères pouvant être stockés dans la mémoire actuellement allouée
(fonction membre publique) |
|
|
modifie le nombre de caractères stockés
(fonction membre publique) |