std::inplace_vector<T,N>:: assign
From cppreference.net
<
cpp
|
container
|
inplace vector
|
constexpr
void
assign
(
size_type count,
const
T
&
value
)
;
|
(1) | (depuis C++26) |
|
template
<
class
InputIt
>
constexpr void assign ( InputIt first, InputIt last ) ; |
(2) | (depuis C++26) |
|
constexpr
void
assign
(
std::
initializer_list
<
T
>
ilist
)
;
|
(3) | (depuis C++26) |
Remplace le contenu du conteneur.
1)
Remplace le contenu par
count
copies de la valeur
value
.
2)
Remplace le contenu par des copies de ceux dans l'intervalle
[
first
,
last
)
.
Cette surcharge participe à la résolution de surcharge uniquement si
InputIt
satisfait aux exigences de
LegacyInputIterator
.
Si
first
ou
last
est un itérateur pointant vers
*
this
, le comportement est indéfini.
3)
Remplace le contenu par les éléments de
ilist
.
| Cette section est incomplète |
Table des matières |
Paramètres
| count | - | la nouvelle taille du conteneur |
| value | - | la valeur pour initialiser les éléments du conteneur |
| first, last | - | la paire d'itérateurs définissant la plage source des éléments à copier |
| ilist | - | std::initializer_list depuis laquelle copier les valeurs |
Complexité
1)
Linéaire en
count
.
2)
Linéaire en fonction de la distance entre
first
et
last
.
3)
Linéaire en
ilist.
size
(
)
.
Exceptions
1-3)
Toute exception levée par l'initialisation des éléments insérés.
Exemple
Le code suivant utilise
assign
pour ajouter plusieurs caractères à un
std::
inplace_vector
<
char
,
5
>
:
Exécuter ce code
#include <inplace_vector> #include <iterator> #include <new> #include <print> int main() { std::inplace_vector<char, 5> chars; chars.assign(4, 'a'); // surcharge (1) std::println("{}", chars); const char extra[3]{'a', 'b', 'c'}; chars.assign(std::cbegin(extra), std::cend(extra)); // surcharge (2) std::println("{}", chars); chars.assign({'C', '+', '+', '2', '6'}); // surcharge (3) std::println("{}", chars); try { chars.assign(8, 'x'); // lève une exception : 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)); // lève une exception } catch(const std::bad_alloc&) { std::println("std::bad_alloc #2"); } try { const auto l = {'1', '2', '3', '4', '5', '6'}; chars.assign(l); // lève une exception : l.size() > chars.capacity() } catch(const std::bad_alloc&) { std::println("std::bad_alloc #3"); } }
Sortie :
['a', 'a', 'a', 'a'] ['a', 'b', 'c'] ['C', '+', '+', '2', '6'] std::bad_alloc #1 std::bad_alloc #2 std::bad_alloc #3
Voir aussi
|
assigne une plage de valeurs au conteneur
(fonction membre publique) |
|
|
assigne des valeurs au conteneur
(fonction membre publique) |