std::basic_string::reserve
De cppreference.com
< cpp | string | 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 quenew_cap
.
- Si
| (hasta C++20) |
| (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
Ejecuta este código
#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) |