std::forward_list<T,Allocator>:: insert_range_after
From cppreference.net
<
cpp
|
container
|
forward list
|
template
<
container-compatible-range
<
T
>
R
>
iterator insert_range_after ( const_iterator pos, R && rg ) ; |
(depuis C++23)
(constexpr depuis C++26) |
|
Insère des copies des éléments dans la plage rg après pos . Chaque itérateur dans la plage rg est déréférencé exactement une fois.
Si l'une des conditions suivantes est satisfaite, le comportement est indéfini :
-
Tn'est pas EmplaceConstructible dansforward_listà partir de * ranges:: begin ( rg ) . -
pos
n'est pas dans l'intervalle
[before_begin(),end()). - rg et * this se chevauchent.
Aucun itérateur ou référence n'est invalidé.
Table des matières |
Paramètres
| pos | - | un itérateur après lequel le contenu sera inséré |
| rg | - |
une
plage compatible avec le conteneur
, c'est-à-dire une
input_range
dont les éléments sont convertibles en
T
|
Valeur de retour
Un itérateur vers le dernier élément inséré, ou pos si rg est vide.
Complexité
Linéaire en taille de rg .
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 <forward_list> #include <iterator> #include <vector> int main() { auto container = std::forward_list{1, 2, 3, 4}; auto pos = std::next(container.cbegin()); assert(*pos == 2); const auto rg = std::vector{-1, -2, -3}; #ifdef __cpp_lib_containers_ranges container.insert_range_after(pos, rg); #else container.insert_after(pos, rg.cbegin(), rg.cend()); #endif assert(std::ranges::equal(container, std::vector{1, 2, -1, -2, -3, 3, 4})); }
Voir aussi
|
(C++23)
|
ajoute une plage d'éléments au début
(fonction membre publique) |
|
insère des éléments après un élément
(fonction membre publique) |
|
|
construit des éléments en place après un élément
(fonction membre publique) |