función de empalme de lista() en C++ STL

La list::splice() es una función integrada en C++ STL que se usa para transferir elementos de una lista a otra. La función splice() se puede utilizar de tres formas: 
 

  1. Transferir todos los elementos de la lista x a otra lista en alguna posición .
  2. Transferir sólo el elemento apuntado por i de la lista x a la lista en alguna posición .
  3. Transfiere el rango [primero, último] de la lista x a otra lista en alguna posición .

Sintaxis: 

list1_name.splice (iterator position, list2)
                or 
list1_name.splice (iterator position, list2, iterator i)
                or 
list1_name.splice (iterator position, list2, iterator first, iterator last)

Parámetros: La función acepta cuatro parámetros que se especifican a continuación: 

  • posición : especifica la posición en la que se transferirán los elementos.
  • list2 : especifica un objeto de lista del mismo tipo que se va a transferir.
  • i – Especifica un iterador a la posición de un elemento en list2 que se va a transferir.
  • primero, último : iteradores que especifican un rango de elementos en la lista2 que se transferirá a la lista1. El rango incluye todos los elementos entre el primero y el último, incluido el elemento señalado por el primero pero no el señalado por el último.

Valor devuelto: Esta función no devuelve nada. 
Los siguientes programas ilustran la función anterior: 
Programa 1: Transfiere todos los elementos de la lista. 

CPP

// CPP program to illustrate the
// list::splice() function
#include <bits/stdc++.h>
using namespace std;
 
int main()
{
    // initializing lists
    list<int> l1 = { 1, 2, 3 };
    list<int> l2 = { 4, 5 };
    list<int> l3 = { 6, 7, 8 };
 
    // transfer all the elements of l2
    l1.splice(l1.begin(), l2);
 
    // at the beginning of l1
    cout << "list l1 after splice operation" << endl;
    for (auto x : l1)
        cout << x << " ";
 
    // transfer all the elements of l1
    l3.splice(l3.end(), l1);
 
    // at the end of l3
    cout << "\nlist l3 after splice operation" << endl;
    for (auto x : l3)
        cout << x << " ";
    return 0;
}
Producción: 

list l1 after splice operation
4 5 1 2 3 
list l3 after splice operation
6 7 8 4 5 1 2 3

 

Complejidad de tiempo: O(n)

Espacio Auxiliar: O(1)

Programa 2: Transferir un solo elemento. 
 

CPP

// CPP program to illustrate the
// list::splice() function
#include <bits/stdc++.h>
using namespace std;
 
int main()
{
    // initializing lists and iterator
    list<int> l1 = { 1, 2, 3 };
    list<int> l2 = { 4, 5 };
    list<int>::iterator it;
 
    // Iterator pointing to 4
    it = l2.begin();
 
    // transfer 4 at the end of l1
    l1.splice(l1.end(), l2, it);
 
    cout << "list l1 after splice operation" << endl;
    for (auto x : l1)
        cout << x << " ";
    return 0;
}
Producción: 

list l1 after splice operation
1 2 3 4

 

Complejidad de tiempo: O(n)

Espacio Auxiliar: O(1)

Programa 3: Transferir una gama de elementos. 

CPP

// CPP program to illustrate the
// list::splice() function
#include <bits/stdc++.h>
using namespace std;
 
int main()
{
    // initializing lists and iterator
    list<int> l1 = { 1, 2, 3, 4, 5 };
    list<int> l2 = { 6, 7, 8 };
    list<int>::iterator it;
 
    // iterator pointing to 1
    it = l1.begin();
 
    // advance the iterator by 2 positions
    advance(it, 2);
 
    // transfer 3, 4 and 5 at the
    // beginning of l2
    l2.splice(l2.begin(), l1, it, l1.end());
 
    cout << "list l2 after splice operation" << endl;
    for (auto x : l2)
        cout << x << " ";
    return 0;
}
Producción: 

list l2 after splice operation
3 4 5 6 7 8

 

Complejidad de tiempo: O(n)

Espacio Auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por rupesh_rao y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *