< cpp‎ | string‎ | basic string
void reserve( size_type new_cap = 0 );

Informs a std::basic_string object of a planned change in size, so that it can manage the storage allocation appropriately.

  • If new_cap is greater than the current capacity(), new storage is allocated, and capacity() is made equal or greater than new_cap.
  • If new_cap is less than the current capacity(), this is a non-binding shrink request.
  • If new_cap is less than the current size(), this is a non-binding shrink-to-fit request equivalent to shrink_to_fit() (since C++11).

If a capacity change takes place, all iterators and references, including the past-the-end iterator, are invalidated.


[edit] Parameters

new_cap - new capacity of the string

[edit] Return value


[edit] Exceptions

Throws std::length_error if new_cap is greater than max_size()

May throw any exceptions thrown by std::allocator_traits<Allocator>::allocate(), such as std::bad_alloc.

[edit] Complexity

At most linear in the size() of the string

[edit] Example

#include <cassert>
#include <string>
int main()
    std::string s;
    std::string::size_type new_capacity{ 100u };
    assert(new_capacity > s.capacity());
    assert(new_capacity <= s.capacity());

[edit] See also

returns the number of characters that can be held in currently allocated storage
(public member function)