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:
- Transferir todos los elementos de la lista x a otra lista en alguna posición .
- Transferir sólo el elemento apuntado por i de la lista x a la lista en alguna posición .
- 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; }
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; }
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; }
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