forward_list::splice_after
Entfernt Elemente aus einer Quell-forward_list und fügt sie in eine Ziel-forward_list ein.
// insert the entire source forward_list void splice_after( const_iterator Where, forward_list& Source ); void splice_after( const_iterator Where, forward_list&& Source ); // insert one element of the source forward_list void splice_after( const_iterator Where, forward_list& Source, const_iterator Iter ); void splice_after( const_iterator Where, forward_list&& Source, const_iterator Iter ); // insert a range of elements from the source forward_list void splice_after( const_iterator Where, forward_list& Source, const_iterator First, const_iterator Last ); void splice_after( const_iterator Where, forward_list&& Source, const_iterator First, const_iterator Last );
Parameter
Where
Die Position in der Ziel-forward_list, hinter der die Elemente eingefügt werden sollen.Source
Die Quell-forward_list, die in die Ziel-forward_list eingefügt werden soll.Iter
Das Element, das aus der Quell-forward_list eingefügt werden soll.First
Das erste Element im Bereich, das aus der Quell-forward_list eingefügt werden soll.Last
Die erste Position hinter dem Bereich, der aus der Quell-forward_list eingefügt werden soll.
Hinweise
Das erste Paar von Memberfunktionen fügt die durch Source gesteuerte Sequenz direkt hinter dem Element in der gesteuerten Sequenz ein, auf die von Where gezeigt wird. Es entfernt auch alle Elemente aus Source. (&Source darf nicht gleich this sein.)
Das zweite Paar von Memberfunktionen entfernt das Element direkt hinter Iter in der durch Source gesteuerten Sequenz und fügt es hinter dem Element in der gesteuerten Sequenz ein, auf die von Where gezeigt wird. (Wenn Where == Iter || Where == ++Iter ist, findet keine Änderung statt.)
Das dritte Paar von Memberfunktionen (Bereich-Splice) fügt den von (First, Last) festgelegten Unterbereich aus der durch Source gesteuerten Sequenz direkt hinter dem Element in der gesteuerten Sequenz ein, auf die von Where gezeigt wird. Es entfernt auch den Original-Unterbereich aus der durch Source gespeicherten Sequenz. (Wenn &Source == this ist, darf der Bereich (First, Last) nicht das Element enthalten, auf das von Where gezeigt wird.)
Wenn der Bereichs-Splice N Elemente und &Source != this einfügt, wird ein Objekt der Klasse iterator um das N-fache erhöht.
Keine Iteratoren, Zeiger oder Verweise, die zusammengeführte Elemente bezeichnen, werden ungültig.
Beispiel
// forward_list_splice_after.cpp
// compile with: /EHsc /W4
#include <forward_list>
#include <iostream>
using namespace std;
template <typename S> void print(const S& s) {
for (const auto& p : s) {
cout << "(" << p << ") ";
}
cout << endl;
}
int main()
{
forward_list<int> c1{ 10, 11 };
forward_list<int> c2{ 20, 21, 22 };
forward_list<int> c3{ 30, 31 };
forward_list<int> c4{ 40, 41, 42, 43 };
forward_list<int>::iterator where_iter;
forward_list<int>::iterator first_iter;
forward_list<int>::iterator last_iter;
cout << "Beginning state of lists:" << endl;
cout << "c1 = ";
print(c1);
cout << "c2 = ";
print(c2);
cout << "c3 = ";
print(c3);
cout << "c4 = ";
print(c4);
where_iter = c2.begin();
++where_iter; // start at second element
c2.splice_after(where_iter, c1);
cout << "After splicing c1 into c2:" << endl;
cout << "c1 = ";
print(c1);
cout << "c2 = ";
print(c2);
first_iter = c3.begin();
c2.splice_after(where_iter, c3, first_iter);
cout << "After splicing the first element of c3 into c2:" << endl;
cout << "c3 = ";
print(c3);
cout << "c2 = ";
print(c2);
first_iter = c4.begin();
last_iter = c4.end();
// set up to get the middle elements
++first_iter;
c2.splice_after(where_iter, c4, first_iter, last_iter);
cout << "After splicing a range of c4 into c2:" << endl;
cout << "c4 = ";
print(c4);
cout << "c2 = ";
print(c2);
}
Anforderungen
Header: <forward_list>
Namespace: std