std::basic_string<CharT,Traits,Allocator>:: shrink_to_fit
| Classes | ||||
|
(C++17)
|
||||
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
void
shrink_to_fit
(
)
;
|
(constexpr seit C++20) | |
Fordert die Entfernung ungenutzter Kapazität an.
Es ist eine unverbindliche Aufforderung, die capacity() auf size() zu reduzieren. Es hängt von der Implementierung ab, ob die Aufforderung erfüllt wird.
Wenn (und nur wenn) eine Neuverteilung stattfindet, werden alle Zeiger, Referenzen und Iteratoren ungültig.
Inhaltsverzeichnis |
Komplexität
Linear in der Größe der Zeichenkette.
Hinweise
In libstdc++,
shrink_to_fit()
ist
nicht verfügbar
im C++98-Modus.
Beispiel
#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'; }
Mögliche Ausgabe:
GCC-Ausgabe: 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-Ausgabe (mit -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
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrektes Verhalten |
|---|---|---|---|
| LWG 755 | C++98 |
std::string
fehlten explizite Shrink-to-Fit-Operationen
|
bereitgestellt |
| LWG 2223 | C++98 |
1. Referenzen, Zeiger und Iteratoren wurden nicht ungültig
2. es gab keine Komplexitätsanforderung |
1. sie können ungültig werden
2. muss linear sein |
Siehe auch
|
gibt die Anzahl der Zeichen zurück
(öffentliche Elementfunktion) |
|
|
gibt die Anzahl der Zeichen zurück, die im aktuell allokierten Speicherplatz gehalten werden können
(öffentliche Elementfunktion) |
|
|
ändert die Anzahl der gespeicherten Zeichen
(öffentliche Elementfunktion) |