std::vector<T,Allocator>::assign_range
Depuis fr.cppreference.net
template< /*container-compatible-range*/<T> R >
constexpr void assign_range( R&& rg );
|
(depuis C++23) | |
Remplace les éléments du conteneur par une copie de chaque élément dans rg.
Tous les itérateurs (y compris l'itérateur end()) et toutes les références aux éléments sont invalidés.
Chaque itérateur dans l'intervalle rg est déréférencé exactement une fois.
Le comportement est indéfini si rg chevauche le conteneur.
Paramètres
| rg | - |
un
input_range
dont le type de référence est convertible en le type d'élément du conteneur
|
| Exigences de type | ||
|
-
|
||
-
T
n'est pas
EmplaceConstructible
dans
vector
à partir de
*
ranges::
begin
(
rg
)
, le comportement est indéfini.
|
||
-
T
n'est pas
MoveInsertable
dans
vector
, le comportement est indéfini :
| ||
|
(jusqu'à C++26) | |
|
(depuis C++26) | |
Notes
| Macro de test de fonctionnalité | Valeur | Std | Fonctionnalité |
|---|---|---|---|
__cpp_lib_containers_ranges
|
202202L
|
(C++23) | Construction et insertion compatibles avec les gammes |
Exemple
Exécuter ce code
#include <algorithm> #include <cassert> #include <vector> #include <list> int main() { const auto source = std::list{2, 7, 1}; auto destination = std::vector{3, 1, 4}; #ifdef __cpp_lib_containers_ranges destination.assign_range(source); #else destination.assign(source.cbegin(), source.cend()); #endif assert(std::ranges::equal(source, destination)); }
Voir aussi
|
(C++23)
|
insère une plage d'éléments
(fonction membre publique) |
|
(C++23)
|
ajoute une plage d'éléments à la fin
(fonction membre publique) |
|
assigne des valeurs au conteneur
(fonction membre publique) |
|
|
assigne des valeurs au conteneur
(fonction membre publique) |