Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::basic_...rink_to_fit(3)  C++ Standard Libary std::basic_...rink_to_fit(3)

NAME
       std::basic_string::shrink_to_fit	- std::basic_string::shrink_to_fit

Synopsis
	  void shrink_to_fit();	 (constexpr since C++20)

	  Requests the removal of unused capacity.

	  It  is  a non-binding	request	to reduce capacity() to	size().	It de-
       pends on	the
	  implementation if the	request	is fulfilled.

	  If (and only if) reallocation	takes place, all pointers, references,
       and iterators
	  are invalidated.

Parameters
	  (none)

Return value
	  (none)

Complexity
	  (unspecified)			    (until C++17)
	  Linear in the	size of	the string. (since C++17)

Notes
	  In libstdc++,	shrink_to_fit()	is not available in C++98 mode.

Example
       // Run this code

	#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';
	}

Possible output:
	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

	  Defect reports

	  The following	behavior-changing defect reports were applied retroac-
       tively to
	  previously published C++ standards.

	    DR	     Applied	to		   Behavior    as    published
       Correct behavior
	  LWG	755   C++98	  std::string  lacked  explicit	 shrink-to-fit
       provided
			     operations

See also
	  size	   returns the number of characters
	  length   (public member function)
		   returns the number of characters that can be	held  in  cur-
       rently allocated
	  capacity storage
		   (public member function)
	  resize   changes the number of characters stored
		   (public member function)

http://cppreference.com		  2024.06.10	  std::basic_...rink_to_fit(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::u32string::shrink_to_fit&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help