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

forward_list merge () 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 forward_list ::merge () trong C ++.

Forward_list trong STL là gì?

Danh sách chuyển tiếp là các vùng chứa trình tự cho phép các thao tác chèn và xóa theo thời gian liên tục ở bất kỳ đâu trong chuỗi. Danh sách chuyển tiếp được triển khai dưới dạng danh sách được liên kết đơn lẻ. Thứ tự được giữ bởi liên kết đến từng phần tử của liên kết với phần tử tiếp theo trong chuỗi.

forward_list ::merge () là gì?

forward_list ::merge () là một hàm có sẵn trong C ++ STL được khai báo trong tệp tiêu đề. merge () được sử dụng để hợp nhất hai forward_list đã sắp xếp thành một.

Trước khi hợp nhất hai danh sách, chúng ta phải đảm bảo các danh sách được sắp xếp theo thứ tự. Nếu không có bộ so sánh nào được chuyển thì nó sẽ hợp nhất hai danh sách thành một danh sách đã được sắp xếp. Khi chúng ta cũng muốn so sánh nội bộ giữa hai danh sách thì chúng ta phải thêm bộ so sánh.

Cú pháp

flist_container1.merge(flist_container2); //will merge both lists
flist_container1.merge(flist_container2, comparator);

Hàm này có thể chấp nhận một hoặc hai tham số -

Tham số

  • list_container2 - Đây là đối tượng của danh sách thứ hai sẽ được hợp nhất

  • so sánh - Điều này xác định một so sánh nội bộ. Đây là một vị từ nhị phân chứa hai đầu vào có giá trị giống như được xác định trong vùng chứa danh sách, nó trả về true nếu phần tử list_container1 được coi là đi trước list_container2, nếu không sẽ là false.

Giá trị trả lại

Hàm này không trả về gì.

Ví dụ

/ * Trong đoạn mã dưới đây, chúng ta đang tạo hai danh sách chuyển tiếp và cả hai đều được sắp xếp và nhiệm vụ là hợp nhất chúng bằng cách sử dụng hàm merge () trong C ++, hàm này sẽ được sắp xếp * /

#include <bits/stdc++.h>
using namespace std;
int main() {
   //creating forward list by inserting sorted values
   forward_list<int> myForwardList1 = { 1, 3, 5, 7 };
   forward_list<int> myForwardList2 = { 2, 4, 6 };
   // merging two sorted forward lists
   myForwardList1.merge(myForwardList2);
   cout << "elements after merging" << endl;
   for (auto i = myForwardList1.begin(); i != myForwardList1.end(); ++i)
      cout << *i << " ";
   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

elements after merging
1 2 3 4 5 6 7

Với bộ so sánh

Ví dụ

/ * Trong đoạn mã dưới đây, chúng tôi đang tạo hai danh sách chuyển tiếp và cả hai đều không được sắp xếp và nhiệm vụ là sắp xếp danh sách trước rồi hợp nhất chúng bằng cách sử dụng hàm merge () trong C ++ và điều đó sẽ được sắp xếp. * /

#include <bits/stdc++.h>
using namespace std;
int main (){
   //create unsorted forward list
   forward_list<int> myForwardList1 = {3, 2, 9};
   forward_list<int> myForwardList2 = {8, 1, 2};
   //sorting the forward list using sort() function
   myForwardList1.sort();
   myForwardList2.sort();
   myForwardList1.merge(myForwardList2);
   cout << "Elements after merging" << endl;
   for (auto i = myForwardList1.begin(); i != myForwardList1.end(); ++i)
      cout << *i << " ";
   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

Elements after merging
1 2 2 3 8 9