list splice() function in C++ STL – GeeksforGeeks

The list::splice() is a built-in function in C++ STL which is used to transfer elements from one list to another. The splice() function can be used in three ways: 
 

  1. Transfer all the elements of list x into another list at some position.
  2. Transfer only the element pointed by i from list x into the list at some position.
  3. Transfers the range [first, last) from list x into another list at some position.

Syntax: 

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)

Parameters: The function accepts four parameters which are specified as below: 

  • position – Specifies the position where the elements are to be transferred.
  • list2 – It specifies a list object of the same type which is to be transferred.
  • i – It specifies an iterator to the position of an element in list2 which is to be transferred.
  • first, last – Iterators specifying a range of elements in list2 which is to be transferred in list1. The range includes all the elements between first and last, including the element pointed by first but not the one pointed by last.

Return value: This function doesnot returns anything. 
Below programs illustrate the above function: 
Program 1: Transfer all the elements of the list. 

Tóm Tắt

CPP




#include <bits/stdc++.h>

using namespace std;

 

int main()

{

    

    list<int> l1 = { 1, 2, 3 };

    list<int> l2 = { 4, 5 };

    list<int> l3 = { 6, 7, 8 };

 

    

    l1.splice(l1.begin(), l2);

 

    

    cout << "list l1 after splice operation" << endl;

    for (auto x : l1)

        cout << x << " ";

 

    

    l3.splice(l3.end(), l1);

 

    

    cout << "\nlist l3 after splice operation" << endl;

    for (auto x : l3)

        cout << x << " ";

    return 0;

}



Output: 

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

 

Time Complexity: O(n)

Auxiliary Space: O(1)

Program 2: Transfer a single element. 
 

CPP




#include <bits/stdc++.h>

using namespace std;

 

int main()

{

    

    list<int> l1 = { 1, 2, 3 };

    list<int> l2 = { 4, 5 };

    list<int>::iterator it;

 

    

    it = l2.begin();

 

    

    l1.splice(l1.end(), l2, it);

 

    cout << "list l1 after splice operation" << endl;

    for (auto x : l1)

        cout << x << " ";

    return 0;

}



Output: 

list l1 after splice operation
1 2 3 4

 

Time Complexity: O(n)

Auxiliary Space: O(1)

Program 3: Transfer a range of elements. 

CPP




#include <bits/stdc++.h>

using namespace std;

 

int main()

{

    

    list<int> l1 = { 1, 2, 3, 4, 5 };

    list<int> l2 = { 6, 7, 8 };

    list<int>::iterator it;

 

    

    it = l1.begin();

 

    

    advance(it, 2);

 

    

    

    l2.splice(l2.begin(), l1, it, l1.end());

 

    cout << "list l2 after splice operation" << endl;

    for (auto x : l2)

        cout << x << " ";

    return 0;

}



Output: 

list l2 after splice operation
3 4 5 6 7 8

 

Time Complexity: O(n)

Auxiliary Space: O(1)

My Personal Notes

arrow_drop_up