Namespaces
Variants

std::inplace_vector<T,N>::assign_range

De fr.cppreference.net

 
 
 
 
template< /*container-compatible-range*/<T> R >
constexpr void assign_range( R&& rg );
(depuis C++26)

Remplace les éléments du conteneur par une copie de chaque élément dans rg.

Chaque itérateur dans la plage 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 satisfait, le programme est mal formé.
-
Si T n'est pas EmplaceConstructible dans inplace_vector à partir de * ranges:: begin ( rg ) , le comportement est indéfini.

Exceptions

Exemple

#include <algorithm>
#include <cassert>
#include <initializer_list>
#include <inplace_vector>
#include <iostream>
#include <new>
int main()
{
    const auto source = {1, 2, 3};
    std::inplace_vector<int, 4> destination{4, 5};
    destination.assign_range(source);
    assert(std::ranges::equal(destination, source));
    try
    {
        const auto bad = {-1, -2, -3, -4, -5};
        destination.assign_range(bad); // lève une exception : bad.size() > destination.capacity()
    }
    catch(const std::bad_alloc& ex)
    {
        std::cout << ex.what() << '\n';
    }
}

Sortie possible :

std::bad_alloc

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)