Computer >> Máy Tính >  >> Lập trình >> C ++

liệt kê hàm splice () trong C ++ STL

Trong bài viết này, chúng ta sẽ thảo luận về cách làm việc, cú pháp và các ví dụ của hàm list ::splice () trong C ++ STL.

Danh sách trong STL là gì?

Danh sách là một cấu trúc dữ liệu cho phép chèn và xóa theo thời gian liên tục ở bất kỳ đâu theo trình tự. Danh sách được triển khai dưới dạng danh sách được liên kết kép. Danh sách cho phép phân bổ bộ nhớ không liền kề. Danh sách thực hiện trích xuất chèn và di chuyển phần tử ở bất kỳ vị trí nào trong vùng chứa tốt hơn so với mảng, vectơ và deque. Trong Danh sách, truy cập trực tiếp vào phần tử chậm và danh sách tương tự như forward_list, nhưng các đối tượng danh sách chuyển tiếp là danh sách được liên kết đơn và chúng chỉ có thể được lặp lại về phía trước.

Danh sách ::splice () là gì?

list ::splice () là một hàm có sẵn trong C ++ STL được khai báo trong tệp tiêu đề . splice () được sử dụng để chuyển các phần tử từ vùng chứa danh sách này sang vùng chứa danh sách khác tại một vị trí nhất định. Hàm này sẽ chèn nội dung vào một danh sách và xóa những nội dung đó khỏi danh sách khác, điều chỉnh kích thước của cả hai danh sách.

Cú pháp

This function’s syntax can be defined as 3 ways:
list1.splice(position, list2);
list1.splice(position, list2, i);
list1.splice(position, list2, first, last);

Tham số

  • vị trí - Vị trí của danh sách mà chúng tôi muốn các phần tử được chuyển.

  • list2 - Danh sách từ nơi chúng tôi muốn chuyển các phần tử.

  • i:Nó là một trình lặp chỉ định vị trí của list2 từ nơi mà phần tử chúng ta muốn chuyển đến cuối danh sách2.

  • đầu tiên, cuối cùng - Cả hai đều là các trình vòng lặp xác định vị trí bắt đầu và kết thúc của list2 mà từ đó chúng ta muốn chuyển các phần tử.

Ví dụ

Input: list<int> List_container= { 10, 11, 13, 15};
      list<int> List2 = {1, 2, 3, 4};
      List_container.splice(2, List2);
Output:
      List_container= 10 11 13 15 3 4
      List2 = 1 2

Giá trị trả lại

Hàm này trả về một trình lặp ngược trỏ đến phần tử cuối cùng của danh sách. Trình lặp ngược là một trình lặp di chuyển theo hướng lùi lại.

#include <bits/stdc++.h>
using namespace std;
int main(){
   list<int> myList_1 = { 10, 20, 30, 40 };
   list<int> myList_2 = { 50, 60 };
   list<int>::iterator i;
   i = myList_2.begin();
   myList_1.splice(myList_1.end(), myList_2, i);
      cout<<"list after splice operation" << endl;
   for (auto temp : myList_1)
      cout << temp << " ";
   return 0;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

list after splice operation
10 20 30 40 50

Ví dụ

#include <bits/stdc++.h>
using namespace std;
int main(){
   list<int> myList_1 = { 10, 20};
   list<int> myList_2 = { 30, 40, 50};
   list<int> myList_3 = {60};
   myList_1.splice(myList_1.begin(), myList_2);
      cout << "list 1 after splice operation" << endl;
   for (auto x : myList_1)
      cout << x << " ";
   myList_3.splice(myList_3.end(), myList_1);
      cout << "\nlist 3 after splice operation" << endl;
   for (auto x : myList_3)
      cout << x << " ";
   return 0;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

list 1 after splice operation
30 40 50 10 20
list 1 after splice operation
60 30 40 50 10 20