Namespaces
Variants

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

De fr.cppreference.net

 
 
 
 
template< container-compatible-range<T> R >
constexpr iterator insert_range( const_iterator pos, R&& rg );
(depuis C++26)

Insère, dans l'ordre non inversé, des copies des éléments dans rg avant pos.

Chaque itérateur de la gamme rg est déréférencé exactement une fois.

rg ne doit pas chevaucher le conteneur. Sinon, le comportement est indéfini.

Paramètres

pos - itérateur avant lequel le contenu sera inséré ( pos peut être l'itérateur end() )
rg - une plage compatible avec les conteneurs , c'est-à-dire une input_range dont les éléments sont convertibles en T
Exigences de type
-
Si l'une des conditions suivantes est satisfaite, le comportement est indéfini :

Valeur de retour

Un itérateur vers le premier élément inséré dans * this , ou pos si rg est vide.

Exceptions

  • std::bad_alloc , si ranges:: distance ( rg ) + size ( ) > capacity ( ) . Les éléments de * this ne sont pas modifiés.
  • Toute exception levée par l'insertion (c'est-à-dire par le constructeur de copie/déplacement, l'opérateur d'affectation de déplacement/copie de T ) ou par toute opération LegacyInputIterator . Les éléments de * this dans l'intervalle [ ​ 0 ​ , pos ) ne sont pas modifiés.

Exemple

#include <cassert>
#include <inplace_vector>
#include <iterator>
#include <new>
#include <print>
int main()
{
    auto v = std::inplace_vector<int, 8>{0, 1, 2, 3};
    auto pos = std::next(v.begin(), 2);
    assert(*pos == 2);
    const auto rg = {-1, -2, -3};
    v.insert_range(pos, rg);
    std::println("{}", v);
    try
    {
        assert(v.size() + rg.size() > v.capacity());
        v.insert_range(pos, rg); // throws: no space
    }
    catch(const std::bad_alloc& ex)
    {
        std::println("{}", ex.what());
    }
}

Sortie possible :

[0, 1, -1, -2, -3, 2, 3]
std::bad_alloc

Voir aussi

insère des éléments
(fonction membre publique)
ajoute une plage d'éléments à la fin
(fonction membre publique)
tente d'ajouter une plage d'éléments à la fin
(fonction membre publique)