std::inplace_vector<T,N>:: assign
From cppreference.net
<
cpp
|
container
|
inplace vector
|
constexpr
void
assign
(
size_type count,
const
T
&
value
)
;
|
(1) | (desde C++26) |
|
template
<
class
InputIt
>
constexpr void assign ( InputIt first, InputIt last ) ; |
(2) | (desde C++26) |
|
constexpr
void
assign
(
std::
initializer_list
<
T
>
ilist
)
;
|
(3) | (desde C++26) |
Reemplaza el contenido del contenedor.
1)
Reemplaza el contenido con
count
copias del valor
value
.
2)
Reemplaza el contenido con copias de aquellos en el rango
[
first
,
last
)
.
Esta sobrecarga participa en la resolución de sobrecarga solo si
InputIt
satisface los requisitos de
LegacyInputIterator
.
Si
first
o
last
es un iterador de
*
this
, el comportamiento es indefinido.
3)
Reemplaza el contenido con los elementos de
ilist
.
| Esta sección está incompleta |
Contenidos |
Parámetros
| count | - | el nuevo tamaño del contenedor |
| value | - | el valor para inicializar los elementos del contenedor |
| first, last | - | el par de iteradores que define el rango fuente de elementos a copiar |
| ilist | - | std::initializer_list desde el cual copiar los valores |
Complejidad
1)
Lineal en
count
.
2)
Lineal en la distancia entre
first
y
last
.
3)
Lineal en
ilist.
size
(
)
.
Excepciones
1-3)
Cualquier excepción lanzada por la inicialización de elementos insertados.
Ejemplo
El siguiente código utiliza
assign
para agregar varios caracteres a un
std::
inplace_vector
<
char
,
5
>
:
Ejecutar este código
#include <inplace_vector> #include <iterator> #include <new> #include <print> int main() { std::inplace_vector<char, 5> chars; chars.assign(4, 'a'); // sobrecarga (1) std::println("{}", chars); const char extra[3]{'a', 'b', 'c'}; chars.assign(std::cbegin(extra), std::cend(extra)); // sobrecarga (2) std::println("{}", chars); chars.assign({'C', '+', '+', '2', '6'}); // sobrecarga (3) std::println("{}", chars); try { chars.assign(8, 'x'); // lanza excepción: count > chars.capacity() } catch(const std::bad_alloc&) { std::println("std::bad_alloc #1"); } try { const char bad[8]{'?'}; // ranges::distance(bad) > chars.capacity() chars.assign(std::cbegin(bad), std::cend(bad)); // lanza excepción } catch(const std::bad_alloc&) { std::println("std::bad_alloc #2"); } try { const auto l = {'1', '2', '3', '4', '5', '6'}; chars.assign(l); // lanza excepción: l.size() > chars.capacity() } catch(const std::bad_alloc&) { std::println("std::bad_alloc #3"); } }
Salida:
['a', 'a', 'a', 'a'] ['a', 'b', 'c'] ['C', '+', '+', '2', '6'] std::bad_alloc #1 std::bad_alloc #2 std::bad_alloc #3
Véase también
|
asigna un rango de valores al contenedor
(función miembro pública) |
|
|
asigna valores al contenedor
(función miembro pública) |