std::inplace_vector<T,N>:: insert_range
|
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 de rg avant pos .
| Cette section est incomplète |
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 | - |
une
plage compatible avec les conteneurs
, c'est-à-dire une
input_range
dont les éléments sont convertibles en
T
|
| Exigences de type | ||
-
|
||
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) |