std::inplace_vector<T,N>::emplace_back
Von cppreference.com
< cpp | container | inplace vector
| template< class... Args > constexpr reference emplace_back( Args&&... args ); |
(seit C++26) | |
Fügt ein neues Element am Ende des Containers hinzu. Typischerweise wird das Element unter Verwendung von Placement-new konstruiert, um das Element an der vom Container bereitgestellten Stelle "in-place" zu erstellen. Die Argumente args... werden mittels std::forward<Args>(args)... an den Konstruktor weitergeleitet.
Keine Iteratoren oder Referenzen werden ungültig, außer end(), welche ungültig wird, wenn die Einfügung stattfindet.
Inhalt |
[bearbeiten] Parameter
| args | - | Argumente, die an den Konstruktor des Elements weitergeleitet werden |
| Typanforderungen | ||
-T muss die Anforderungen von EmplaceConstructible erfüllen. | ||
[bearbeiten] Rückgabewert
back(), d.h. eine Referenz auf das eingefügte Element.
[bearbeiten] Komplexität
Konstant.
[bearbeiten] Ausnahmen
- std::bad_alloc, wenn size() == capacity() vor dem Aufruf.
- Jede Ausnahme, die bei der Initialisierung des eingefügten Elements ausgelöst wird.
Wenn aus irgendeinem Grund eine Ausnahme ausgelöst wird, haben diese Funktionen keine Auswirkungen (starke Ausnahme-Sicherheitsgarantie).
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#include <inplace_vector> #include <new> #include <print> #include <string> #include <utility> int main() { std::inplace_vector<std::pair<std::string, std::string>, 2> fauna; std::string dog{"\N{DOG}"}; fauna.emplace_back("\N{CAT}", dog); fauna.emplace_back("\N{CAT}", std::move(dog)); std::println("fauna = {}", fauna); try { fauna.emplace_back("\N{BUG}", "\N{BUG}"); // throws: there is no space } catch(const std::bad_alloc& ex) { std::println("{}", ex.what()); } std::println("fauna = {}", fauna); }
Mögliche Ausgabe
fauna = [("🐈", "🐕"), ("🐈", "🐕")]
std::bad_alloc
fauna = [("🐈", "🐕"), ("🐈", "🐕")][bearbeiten] Siehe auch
| fügt einen Bereich von Elementen am Ende hinzu (public member function) | |
| fügt ein Element am Ende hinzu (public member function) | |
| versucht, ein Element am Ende hinzuzufügen (public member function) | |
| versucht, ein Element inplace am Ende zu konstruieren (public member function) | |
| versucht, einen Bereich von Elementen am Ende hinzuzufügen (public member function) | |
| fügt bedingungslos ein Element am Ende hinzu (public member function) | |
| konstruiert bedingungslos ein Element inplace am Ende (public member function) | |
| entfernt das letzte Element (public member function) | |
| erstellt einen std::back_insert_iterator vom Typ, der aus dem Argument abgeleitet wird (Funktionsvorlage) |