Partilhar via


forward_list::splice_after

Remove elementos de uma forward_list de origem e os insere em uma forward_list de destino.

// 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 );

Parâmetros

  • Where
    A posição na forward_list de destino após a qual o elemento deve ser inserido.

  • Source
    A forward_list de origem que deve ser inserida na forward_list de destino.

  • Iter
    O elemento a ser inserido da forward_list de origem.

  • First
    O primeiro elemento no intervalo a ser inserido da forward_list de origem.

  • Last
    A primeira posição além do intervalo a ser inserida da forward_list de origem.

Comentários

O primeiro par de funções de membro insere a sequência controlada por Source após o elemento na sequência controlada apontada por Where. Também remove elementos de Source. (&Source não deve ser igual a this.)

O segundo par de funções de membro remove o elemento imediatamente após Iter na sequência controlada por Source e o insere imediatamente após o elemento na sequência controlada apontada por Where. (Se Where == Iter || Where == ++Iter, nenhuma alteração ocorrerá.)

O terceiro par de funções de membro (união com intervalos) insere o subintervalo designado por (First, Last) da sequência controlada por Source imediatamente após o elemento na sequência controlada apontada por Where. Ele também remove o subintervalo original da sequência controlada por Source. (Se &Source == this, o intervalo (First, Last) 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.

Nenhum iterador, ponteiro ou referência que designa elementos unidos se torna inválido.

Exemplo

// 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);
}
  

Requisitos

Cabeçalho: <forward_list>

Namespace: std

Consulte também

Referência

Classe forward_list