std::basic_string::reserve
De cppreference.com
<tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num ">
</tbody><tbody>
</tbody>
| (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_capes 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) |
Parámetros
| new_cap | - | La nueva capacidad de la cadena. |
Valor de retorno
(Ninguno)
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.
Complejidad
A lo sumo lineal en el tamaño size() de la cadena.
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());
}
Véase también
| Devuelve el número de caracteres que pueden almacenarse en el almacenamiento asignado actual (función miembro pública) |