list::splice
Entfernt Elemente aus einer Quellliste und fügt sie in eine Zielliste ein.
// insert the entire source list void splice( const_iterator Where, list<Type, Allocator>& Source ); void splice( const_iterator Where, list<Type, Allocator>&& Source ); // insert one element of the source list void splice( const_iterator Where, list<Type, Allocator>& Source, const_iterator Iter ); void splice( const_iterator Where, list<Type, Allocator>&& Source, const_iterator Iter ); // insert a range of elements from the source list void splice( const_iterator Where, list<Type, Allocator>& Source, const_iterator First, const_iterator Last ); void splice( const_iterator Where, list<Type, Allocator>&& Source, const_iterator First, const_iterator Last );
Parameter
Where
Die Position in der Zielliste, vor der die Elemente eingefügt werden sollen.Source
Die Quellliste, die in die Zielliste eingefügt werden soll.Iter
Das Element, das aus der Quellliste eingefügt werden soll.First
Das erste Element im Bereich, das aus der Quellliste eingefügt werden soll.Last
Die erste Position hinter dem letzten Element im Bereich, das aus der Quellliste eingefügt werden soll.
Hinweise
Das erste Paar von Memberfunktionen fügt alle Elemente in der Quellliste vor der Position, auf die durch Where verwiesen wird, in die Zielliste ein und entfernt alle Elemente aus der Quellliste. (&Source darf nicht gleich this sein.)
Das zweite Paar von Memberfunktionen fügt das Element, auf das durch Iter verwiesen wird, vor der Position in der Zielliste ein, auf die durch Where verwiesen wird, und entfernt Iter aus der Quellliste. (Wenn Where == Iter || Where == ++Iter ist, findet keine Änderung statt.)
Das dritte Paar von Memberfunktionen fügt den durch [First, Last) festgelegten Bereich vor dem Element in der Zielliste ein, auf das durch Where verwiesen wird, und entfernt diesen Bereich von Elementen aus der Quellliste. (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.
In allen diesen Fällen bleiben Iteratoren, Zeiger oder Verweise, die auf zusammengeführte Elemente verweisen, gültig und werden in den Zielcontainer übertragen.
Beispiel
// list_splice.cpp
// compile with: /EHsc /W4
#include <list>
#include <iostream>
using namespace std;
template <typename S> void print(const S& s) {
cout << s.size() << " elements: ";
for (const auto& p : s) {
cout << "(" << p << ") ";
}
cout << endl;
}
int main()
{
list<int> c1{10,11};
list<int> c2{20,21,22};
list<int> c3{30,31};
list<int> c4{40,41,42,43};
list<int>::iterator where_iter;
list<int>::iterator first_iter;
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(where_iter, c1);
cout << "After splicing c1 into c2:" << endl;
cout << "c1 = ";
print(c1);
cout << "c2 = ";
print(c2);
first_iter = c3.begin();
c2.splice(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;
--last_iter;
c2.splice(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: <list>
Namespace: std