std::inplace_vector<T,N>:: emplace
|
template
<
class
...
Args
>
constexpr iterator emplace ( const_iterator position, Args && ... args ) ; |
(depuis C++26) | |
Insère un nouvel élément dans le conteneur directement avant pos . Généralement, l'élément est construit en utilisant le placement new pour construire l'élément in-situ à l'emplacement fourni par le conteneur. Les arguments args... sont transmis au constructeur via std:: forward < Args > ( args ) ... .
| Cette section est incomplète |
Table des matières |
Paramètres
| pos | - | itérateur avant lequel le nouvel élément sera construit |
| args | - | arguments à transmettre au constructeur de l'élément |
| Exigences de type | ||
-
T
doit satisfaire aux exigences de
MoveAssignable
,
MoveInsertable
et
EmplaceConstructible
.
|
||
Valeur de retour
Un itérateur vers l'élément inséré.
Complexité
Linéaire en fonction de la distance entre pos et end() .
Exceptions
Lance std::bad_alloc si avant l'invocation size ( ) == capacity ( ) . La fonction n'a aucun effet ( garantie de sécurité d'exception forte ).
Toute exception levée par l'initialisation de l'élément inséré ou par toute
LegacyInputIterator
opération. Les éléments dans
[
0
,
pos
)
ne sont pas modifiés.
Exemple
#include <cassert> #include <inplace_vector> #include <new> #include <utility> int main() { using P = std::pair<int, int>; using I = std::inplace_vector<P, 3>; auto nums = I{{0, 1}, {2, 3}}; auto it = nums.emplace(nums.begin() + 1, -1, -2); assert((*it == P{-1, -2})); assert((nums == I{P{0, 1}, {-1, -2}, {2, 3}})); try { nums.emplace(nums.begin(), 1, 3); // lève une exception : pas d'espace } catch(const std::bad_alloc& ex) { std::cout << ex.what() << '\n'; } }
Sortie possible :
std::bad_alloc
Voir aussi
|
insère des éléments
(fonction membre publique) |
|
|
construit un élément en-place à la fin
(fonction membre publique) |