Trong bài viết này, chúng ta sẽ thảo luận về hoạt động, cú pháp và ví dụ của hàm list::merge() trong C++.
list::merge() là gì?
list::merge() là hàm tích hợp trong C++ STL khai báo trong <list>. Hàm này gộp hai list thành một. Có thể gộp đơn giản hoặc thêm bộ so sánh (comparator).
Trước khi gộp, hai list phải đã được sắp xếp. Nếu không truyền comparator, nó gộp thành một list đã sắp xếp. Khi cần so sánh nội bộ, phải thêm comparator.
Cú pháp
list_container1.merge(list_container2); // gộp vào list_container1 list_container1.merge(list_container2, comparator);
Tham số
list_container2– đối tượng list thứ hai cần gộp.comparator– định nghĩa so sánh nội bộ. Là谓词 nhị nhận hai giá trị cùng kiểu với list, trả về true nếu phần tử của list_container1 được coi là đứng trước list_container2.
Giá trị trả về
Hàm không trả về giá trị.
Ví dụ không có comparator
Tạo hai list đã sắp xếp, gộp chúng, kết quả cũng sắp xếp.
#include <bits/stdc++.h>
using namespace std;
int main() {
list<int> myList_1 = {2, 4, 6, 8};
list<int> myList_2 = {1, 3, 5, 7};
myList_2.merge(myList_1);
cout << "Lists after merging: ";
for (auto i = myList_2.begin(); i != myList_2.end(); ++i) cout << *i << " ";
return 0;
}
Đầu ra
Lists after merging: 1 2 3 4 5 6 7 8
Ví dụ có comparator
Gộp hai list và sắp xếp list kết quả.
#include <bits/stdc++.h>
using namespace std;
bool compare(int a, int b) {
return a < b;
}
int main() {
list<int> myList_1 = {2, 4, 1};
list<int> myList_2 = {7, 6, 5};
myList_1.sort();
myList_2.sort();
myList_1.merge(myList_2);
myList_2.push_back(3);
myList_1.merge(myList_2, compare);
cout << "List Elements are: ";
for (auto i = myList_1.begin(); i != myList_1.end(); ++i) cout << ' ' << *i;
return 0;
}
Đầu ra
List Elements are: 1 2 3 4 5 6 7