list::splice
Supprime des éléments d'une liste source et les insère dans une liste de destination.
// 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 );
Paramètres
Where
Position dans la liste de destination avant laquelle l'insertion doit être effectuée.Source
Liste source qui doit être insérée dans la liste de destination.Iter
Élément à insérer à partir de la liste source.First
Premier élément de la plage à insérer à partir de la liste source.Last
Première position au-delà du dernier élément de la plage à insérer à partir de la liste source.
Notes
La première paire de fonctions membres insère tous les éléments de la liste source dans la liste de destination avant la position référencée par Where et supprime tous les éléments de la liste source. (&Source ne doit pas être égal à this.)
La deuxième paire de fonctions membres insère l'élément référencé par Iter avant la position dans la liste de destination référencée par Where et supprime Iter de la liste source. (Si Where == Iter || Where == ++Iter, aucune modification ne se produit.)
La troisième paire de fonctions membres insère la plage désignée par [First, Last) avant l'élément dans la liste de destination référencé par Where et supprime cette plage d'éléments de la liste source. (Si &Source == this, la plage [First, Last) ne doit pas inclure l'élément vers lequel Where pointe.)
Si la méthode splice à plage insère N éléments et que &Source != this, un objet de classe iterator est incrémenté N fois.
Dans tous les cas, les itérateurs, pointeurs ou références qui désignent des éléments ajoutés restent valides et sont transférés vers le conteneur de destination.
Exemple
// 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);
}
Configuration requise
En-tête : <list>
Espace de noms : std