std::inplace_vector<T,N>::emplace
template< class... Args >
constexpr iterator emplace( const_iterator position, Args&&... args );
|
(seit C++26) | |
Fügt ein neues Element direkt vor pos in den Container ein. Normalerweise wird das Element mittels new-new an der vom Container bereitgestellten Stelle erstellt. Die Argumente args... werden an den Konstruktor als std::forward<Args>(args)... weitergeleitet.
| Dieser Abschnitt ist unvollständig |
Parameter
| pos | - | Iterator, vor dem das neue Element konstruiert wird |
| args | - | Argumente, die an den Konstruktor des Elements weitergeleitet werden |
| Typanforderungen | ||
-
T
muss die Anforderungen von
MoveAssignable
,
MoveInsertable
und
EmplaceConstructible
erfüllen.
|
||
Rückgabewert
Ein Iterator auf das eingefügte Element.
Komplexität
Linear in der Entfernung zwischen pos und end() .
Ausnahmen
Wirft std::bad_alloc falls vor dem Aufruf size ( ) == capacity ( ) . Die Funktion hat keine Auswirkungen ( starke Ausnahmesicherheitsgarantie ).
Jede Ausnahme, die durch die Initialisierung des eingefügten Elements oder durch einen
LegacyInputIterator
-Vorgang ausgelöst wird. Elemente im Bereich
[
0
,
pos
)
bleiben unverändert.
Beispiel
#include <cassert>
#include <inplace_vector>
#include <iostream>
#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); // throws: no space
}
catch(const std::bad_alloc& ex)
{
std::cout << ex.what() << '\n';
}
}
Mögliche Ausgabe:
std::bad_alloc
Siehe auch
|
fügt Elemente ein
(öffentliche Elementfunktion) |
|
|
erstellt ein Element direkt am Ende
(öffentliche Elementfunktion) |