Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Hàm forward_list::merge() trong C++ STL


Trong bài viết này, chúng ta sẽ thảo luận về cách hoạt động, cú pháp và ví dụ của hàm forward_list::merge() trong C++.

Forward_list trong STL là gì?

forward_list là các container trình tự cho phép chèn và xóa trong thời gian không đổi ở bất kỳ vị trí nào trong chuỗi. forward_list được triển khai dưới dạng danh sách liên kết đơn. Thứ tự được duy trì bằng cách liên kết mỗi phần tử với phần tử tiếp theo trong chuỗi.

forward_list::merge() là gì?

forward_list::merge() là hàm built-in trong C++ STL được khai báo trong header <forward_list>. Hàm merge() được 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 phải được sắp xếp. Nếu không truyền comparator, nó sẽ hợp nhất thành một danh sách sắp xếp tăng dần. Khi cần so sánh tùy chỉnh, ta truyền thêm comparator.

Cú pháp

flist_container1.merge(flist_container2); // hợp nhất hai list
flist_container1.merge(flist_container2, comparator); // với comparator

Hàm này chấp nhận một hoặc hai tham số:

Tham số

  • list_container2 – Đối tượng list thứ hai cần hợp nhất.

  • comparator – Hàm so sánh nhị phân nhận hai giá trị cùng kiểu với list, trả về true nếu phần tử của list_container1 nên đứng trước list_container2, ngược lại trả về false.

Giá trị trả về

Hàm này không trả về giá trị nào.

Ví dụ: Hợp nhất hai list đã sắp xếp

#include <bits/stdc++.h>
using namespace std;

int main() {
    // tạo forward list với giá trị đã sắp xếp
    forward_list<int> myForwardList1 = {1, 3, 5, 7};
    forward_list<int> myForwardList2 = {2, 4, 6};
    // hợp nhất hai forward list đã sắp xếp
    myForwardList1.merge(myForwardList2);
    cout << "Các phần tử sau khi hợp nhất" << endl;
    for (auto i = myForwardList1.begin(); i != myForwardList1.end(); ++i)
        cout << *i << " ";
    return 0;
}

Kết quả

Chạy mã trên sẽ cho kết quả sau:

Các phần tử sau khi hợp nhất 1 2 3 4 5 6 7

Ví dụ: Sử dụng comparator

#include <bits/stdc++.h>
using namespace std;

int main() {
    // tạo forward list chưa sắp xếp
    forward_list<int> myForwardList1 = {3, 2, 9};
    forward_list<int> myForwardList2 = {8, 1, 2};
    // sắp xếp trước khi hợp nhất
    myForwardList1.sort();
    myForwardList2.sort();
    myForwardList1.merge(myForwardList2);
    cout << "Các phần tử sau khi hợp nhất" << endl;
    for (auto i = myForwardList1.begin(); i != myForwardList1.end(); ++i)
        cout << *i << " ";
    return 0;
}

Kết quả

Chạy mã trên sẽ cho kết quả sau:

Các phần tử sau khi hợp nhất 1 2 2 3 8 9