A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://en.cppreference.com/w/cpp/language/../string/basic_string/reserve.html below:

std::basic_string<CharT,Traits,Allocator>::reserve - cppreference.com

(1)

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)
(deprecated in C++20)
(removed in C++26) 1)

Informs a

std::basic_string

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

(until C++20) (since C++20)

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] 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.

If an exception is thrown for any reason, this function has no effect (strong exception safety guarantee).

[edit] Complexity

At 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 storage
(public member function) [edit] changes the number of characters stored
(public member function) [edit]

RetroSearch 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