Namespaces
Variants

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
-
Si std:: assignable_from < T & , ranges:: range_reference_t < R >> n'est pas modélisé, le programme est mal formé.
-
Si T n'est pas EmplaceConstructible dans vector à partir de * ranges:: begin ( rg ) , le comportement est indéfini.
-
Si l'une des conditions suivantes est satisfaite, et 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

#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));
}
Seul le texte "Run this code" a été traduit en "Exécuter ce code". Tous les autres éléments (balises HTML, code C++, attributs, termes spécifiques au C++) ont été préservés dans leur forme originale comme demandé.

Voir aussi

insère une plage d'éléments
(fonction membre publique)
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)