std::basic_string<CharT,Traits,Allocator>::shrink_to_fit
cppreference.net에서 가져옴
void shrink_to_fit();
|
(C++20부터 constexpr) | |
사용하지 않는 용량 제거를 요청합니다.
이는 capacity()를 size()로 줄이기 위한 비구속적 요청입니다. 요청이 이행되는지는 구현에 따라 다릅니다.
재할당이 발생하는 경우(그리고 오직 그 경우에만) 모든 포인터, 참조자 및 반복자가 무효화됩니다.
복잡도
문자열의 크기에 선형적으로 비례합니다.
참고 사항
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 출력: 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 출력 (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
에 명시적 축소 맞춤(shrink-to-fit) 연산이 없었음
|
제공됨 |
| LWG 2223 | C++98 |
1. 참조, 포인터, 반복자가 무효화되지 않았음
2. 복잡도 요구사항이 없었음 |
1. 무효화될 수 있음
2. 선형 시간 복잡도 요구사항 추가 |
참고 항목
|
문자의 수를 반환합니다
(public member function) |
|
|
현재 할당된 저장 공간에 보관할 수 있는 문자의 수를 반환합니다
(public member function) |
|
|
저장된 문자의 수를 변경합니다
(public member function) |