Compartilhar via


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

Consulte também

Referência

Classe list

Biblioteca de Modelos Padrão