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. Typischerweise wird das Element mittels Placement- new direkt an der vom Container bereitgestellten Position konstruiert. Die Argumente args... werden an den Konstruktor als std:: forward < Args > ( args ) ... weitergeleitet.
| Dieser Abschnitt ist unvollständig |
Inhaltsverzeichnis |
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 <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); // wirft Exception: kein Speicherplatz } 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) |