list::splice
Remove elementos de uma lista de origem e os insere em uma lista de destino.
// 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 );
Parâmetros
Where
A posição na lista de destino antes da inserção.Source
A lista de origem a ser inserida na lista de destino.Iter
O elemento a ser inserido da lista de origem.First
O primeiro elemento no intervalo a ser inserido da lista de origem.Last
A primeira posição além do último elemento no intervalo a ser inserido da lista de origem.
Comentários
O primeiro par de funções de membro insere todos os elementos na lista de origem na lista de destino antes da posição indicada por Where e remove todos os elementos da lista de origem. (&Source não deve ser igual a this.)
O segundo par de funções de membro insere o elemento indicado por Iter antes da posição na lista de destino indicada por Where e remove Iter da lista de origem. (Se Where == Iter || Where == ++Iter, nenhuma alteração ocorrerá.)
O terceiro par de funções de membro insere o intervalo designado por [First, Last) antes do elemento na lista de destino indicada por Where e remove esse intervalo de elementos da lista de origem. (Se &Source == this, o intervalo não deve incluir o elemento apontado por Where.)
Se a união no intervalo inserir elementos N e &Source != this, um objeto da classe iterator será incrementado N vezes.
Em todos os iteradores de casos, ponteiros ou referências a elementos de união permanecem válidos e são transferidos para o contêiner de destino.
Exemplo
// 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);
}
Requisitos
Cabeçalho: <list>
Namespace: std