Bài viết này trình bày cách hoạt động của hàm forward_list::unique() trong C++.
forward_list là container trình tự cho phép chèn và xóa trong thời gian không đổi. forward_list được triển khai dưới dạng danh sách liên kết đơn.
forward_list::unique() là hàm trong thư viện chuẩn C++ dùng để xóa tất cả các phần tử trùng lặp liên tiếp trong forward list. Lưu ý: một phần tử chỉ bị xóa nếu nó bằng phần tử ngay trước nó. Do đó, hàm này đặc biệt hữu ích cho các danh sách đã sắp xếp.
Cú pháp
forwardlist_name.unique(binary_predicate)
Cú pháp cho binary predicate
bool name(kieu_du_lieu a, kieu_du_lieu b)
Tham số – Hàm chấp nhận một tham số là binary predicate trả về true nếu hai phần tử được coi là bằng nhau.
Ví dụ minh họa
Input: 4, 4, 17, 32, 45, 56, 56, 45, 32, 4, 17, 17 Sau unique: 4, 17, 32, 45, 56 Input: 15.2, 74.0, 3.14, 15.2, 69.5, 74.0, 3.14, 18.5, 3.99 Sau unique: 3.14, 3.99, 15.2, 18.5, 69.5, 74.0
Cách tiếp cận
- Tạo hàm binary predicate (nếu cần).
- Khởi tạo forward list.
- Gọi hàm
unique(). - In list sau khi unique.
Ví dụ code
// C++ code demo forward_list::unique()
#include <iostream>
#include <forward_list>
#include <cmath>
using namespace std;
bool cmp(int a, int b) {
return abs(a) == abs(b);
}
int main() {
forward_list<int> List = {2, 4, 6, 3, 5, 3, 4, 4, 9, 1, 6, 6, 2, 2, 9};
cout << "Phần tử List: ";
for (auto x = List.begin(); x != List.end(); ++x)
cout << *x << " ";
List.unique();
cout << "\nList sau unique: ";
for (auto x = List.begin(); x != List.end(); ++x)
cout << *x << " ";
return 0;
}
Kết quả
Phần tử List: 2 4 6 3 5 3 4 4 9 1 6 6 2 2 9 List sau unique: 2 4 6 3 5 4 9 1 6 2 9