Espacios de nombres
Variantes
Acciones

std::basic_string::reserve

De cppreference.com
< cpp‎ | string‎ | basic string
Revisión a fecha de 11:19 23 jun 2020; Ljestrada (Discusión | contribuciones)

(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
 
 
 
std::basic_string
 
(1)
void reserve( size_type new_cap = 0 );
(hasta C++20)
constexpr void reserve( size_type new_cap );
(desde C++20)
void reserve();
(2) (desde C++20)
(en desuso)
1) Informa a un objeto std::basic_string de un cambio de tamaño planeado, para que pueda gestionar la asignación de almacenamiento apropiadamente.
  • Si new_cap es mayor que la capacidad actual capacity(), se asigna nuevo almacenamiento, y capacity() se hace igual o mayor que new_cap.
  • Si new_cap es menor que la capacidad actual capacity(), esta es una solicitud de reducción no obligatoria.
  • Si new_cap es menor que el tamaño size(), esta es una solicitud de reducción al tamaño actual no obligatoria equivalente a shrink_to_fit() (desde C++11).
(hasta C++20)
  • Si new_cap es menor que o igual a la capacidad actual capacity(), no tiene efecto.
(desde C++20)
Si ocurre un cambio de capacidad, se invalidan todos los iteradores y referencias, incluyendo el iterador después del final.
2) Una llamada a reserve sin argumento es una solicitud de reducción al tamaño actual no obligatoria. Después de esta llamada, capacity() tiene un valor sin especificar mayor que o igual a size().
(desde C++20)

Contenido

[editar] Parámetros

new_cap - La nueva capacidad de la cadena.

[editar] Valor de retorno

(Ninguno)

[editar] Excepciones

Lanza std::length_error si new_cap es mayor que max_size()

Puede lanzar cualquier excepción lanzada por std::allocator_traits<Allocator>::allocate(), tal como std::bad_alloc.

[editar] Complejidad

A lo sumo lineal en el tamaño size() de la cadena.

[editar] Ejemplo

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


[editar] Véase también

Devuelve el número de caracteres que pueden almacenarse en el almacenamiento asignado actual
(función miembro pública) [editar]