std::forward_list<T,Allocator>::emplace_after
Von cppreference.com
< cpp | container | forward list
| template< class... Args > iterator emplace_after( const_iterator pos, Args&&... args ); |
(seit C++11) | |
Fügt ein neues Element nach der angegebenen Position in den Container ein. Das Element wird an Ort und Stelle konstruiert, d.h. es werden keine Kopier- oder Verschiebungsoperationen durchgeführt. Der Konstruktor des Elements wird mit exakt denselben Argumenten aufgerufen, wie sie an die Funktion übergeben wurden.
Keine Iteratoren oder Referenzen werden ungültig.
Inhalt |
[bearbeiten] Parameter
| pos | - | Iterator, nach dem das neue Element konstruiert wird |
| args | - | Argumente, die an den Konstruktor des Elements weitergeleitet werden |
[bearbeiten] Rückgabewert
Iterator auf das neue Element.
[bearbeiten] Komplexität
Konstant.
[bearbeiten] Ausnahmen
Wenn aus irgendeinem Grund eine Ausnahme ausgelöst wird, hat diese Funktion keine Auswirkungen (starkes Ausnahmesicherheitsgarantie).
[bearbeiten] Beispiel
Das Beispiel zeigt eine kanonische Befüllung einer einfach verketteten Liste in natürlicher (im Gegensatz zu umgekehrter) Reihenfolge.
Führen Sie diesen Code aus
#include <forward_list> #include <iostream> #include <string> struct Sum { std::string remark; int sum; Sum(std::string remark, int sum) : remark{std::move(remark)}, sum{sum} {} void print() const { std::cout << remark << " = " << sum << '\n'; } }; int main() { std::forward_list<Sum> list; auto iter = list.before_begin(); std::string str{"1"}; for (int i{1}, sum{1}; i != 10; sum += i) { iter = list.emplace_after(iter, str, sum); ++i; str += " + " + std::to_string(i); } for (const Sum& s : list) s.print(); }
Ausgabe
1 = 1 1 + 2 = 3 1 + 2 + 3 = 6 1 + 2 + 3 + 4 = 10 1 + 2 + 3 + 4 + 5 = 15 1 + 2 + 3 + 4 + 5 + 6 = 21 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 = 36 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 = 45
[bearbeiten] Siehe auch
| fügt Elemente nach einem Element ein (public member function) |