Espacios de nombres
Variantes
Acciones

std::basic_string::reserve

De cppreference.com
< cpp‎ | string‎ | basic string
 
 
 
std::basic_string
 
(1)
void reserve( size_type new_cap =0);
(hasta C++20)
constexprvoid 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]
close