std::basic_string::reserve
De cppreference.com
< cpp | string | 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 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) |