Compartir a través de


list::splice

Quita elementos de una lista de origen y los inserta en una 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
    Posición en la lista de destino anterior a la posición de inserción.

  • Source
    Lista de origen que se va a insertar en la lista de destino.

  • Iter
    Elemento que se va a insertar de la lista de origen.

  • First
    Primer elemento del intervalo que se va a insertar de la lista de origen.

  • Last
    Primera posición después del último elemento del intervalo que se va a insertar de la lista de origen.

Comentarios

El primer par de funciones miembro inserta todos los elementos de la lista de origen en la lista de destino, en una posición anterior a la posición denominada Where y quita todos los elementos de la lista de origen. (&Source no debe ser igual que this).

El segundo par de funciones miembro inserta el elemento Iter en una posición anterior a la posición en la lista de destino denominada Where y quita Iter la lista de origen. (Si Where == Iter || Where == ++Iter, no se produce ningún cambio).

El tercer par de funciones miembro inserta el rango designado mediante [First, Last] antes del elemento en la lista de destino denominado Where y quita dicho intervalo de elementos de la lista de origen. (Si &Source == this, el intervalo [First, Last) no debe incluir el elemento al que Where apunta).

Si la inserción de intervalo inserta N elementos y &Source != this, un objeto de la clase iterator se incrementará N veces.

En todos los casos, los iteradores, punteros o referencias que remitan a elementos insertos seguirán siendo válidos y se transferirán al contenedor de destino.

Ejemplo

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

Encabezado: <list>

Espacio de nombres: std

Vea también

Referencia

list (Clase)

Biblioteca de plantillas estándar