void reserve( size_type new_cap = 0 );
(until C++20)constexpr void reserve( size_type new_cap );
(since C++20)void reserve();
(2) (since C++20)Informs a
std::basic_string
object of a planned change in size, so that it can manage the storage allocation appropriately.
If a capacity change takes place, all iterators and references, including the past-the-end iterator, are invalidated.
2)A non-binding shrink-to-fit request. After this call,
capacity()has an unspecified value greater than or equal to
size().
[edit] Parameters new_cap - new capacity of the string [edit] Return value(none)
[edit] ExceptionsThrows 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.
If an exception is thrown for any reason, this function has no effect (strong exception safety guarantee).
[edit] ComplexityAt most linear in the size() of the string.
[edit] Example#include <cassert> #include <iostream> #include <string> int main() { std::string s; std::cout << "1) Initially: " << s.capacity() << '\n'; const std::string::size_type new_cap{101u}; s.reserve(new_cap); assert(s.capacity() >= new_cap); std::cout << "2) After reserve(" << new_cap << "): " << s.capacity() << '\n'; // observing the capacity growth factor auto cap{s.capacity()}; for (int check{}; check != 4; ++check) { while (cap == s.capacity()) s += '$'; cap = s.capacity(); std::cout << (3) + check << ") Capacity: " << cap << '\n'; } // s.reserve(); // deprecated/removed in C++20/26, use: s.shrink_to_fit(); std::cout << "7) After shrink_to_fit: " << s.capacity() << '\n'; }
Possible output:
1) Initially: 15 2) After reserve(101): 101 3) Capacity: 202 4) Capacity: 404 5) Capacity: 808 6) Capacity: 1616 7) After shrink_to_fit: 809[edit] Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
DR Applied to Behavior as published Correct behavior LWG 847 C++98 there was no exception safety guarantee added strong exception safety guarantee [edit] See also returns the number of characters that can be held in currently allocated storageRetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4