Namespaces
Variants

std::vector<T,Allocator>:: insert_range

From cppreference.net

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

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

Si après l'opération la nouvelle size() est supérieure à l'ancienne capacity() , une réallocation se produit, auquel cas tous les itérateurs (y compris l'itérateur end() ) et toutes les références aux éléments sont invalidés. Sinon, seuls les itérateurs et références avant le point d'insertion restent valides.

Chaque itérateur dans la plage rg est déréférencé exactement une fois.

Si rg chevauche * this , le comportement est indéfini.

Table des matières

Paramètres

pos - itérateur avant lequel le contenu sera inséré ( pos peut être l'itérateur end() )
rg - un intervalle compatible avec le conteneur , c'est-à-dire un 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.

Complexité

Si l'une des conditions suivantes est satisfaite, effectue au plus une réallocation :

(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 <iterator>
#include <vector>
#include <list>
int main()
{
    auto container = std::vector{1, 2, 3, 4};
    auto pos = std::next(container.begin(), 2);
    assert(*pos == 3);
    const auto rg = std::list{-1, -2, -3};
#ifdef __cpp_lib_containers_ranges
    container.insert_range(pos, rg);
#else
    container.insert(pos, rg.cbegin(), rg.cend());
#endif
    assert(std::ranges::equal(container, std::vector{1, 2, -1, -2, -3, 3, 4}));
}

Voir aussi

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