Toán tử quan hệ
#include <forward_list>
bool operator==(const forward_list& a, const forward_list& b);
bool operator!=(const forward_list& a, const forward_list& b);
bool operator<(const forward_list& a, const forward_list& b);
bool operator>(const forward_list& a, const forward_list& b);
bool operator<=(const forward_list& a, const forward_list& b);
bool operator>=(const forward_list& a, const forward_list& b);
So sánh hai forward_list với nhau.
Tham số
a, b
- Hai forward_list cần so sánh. Chúng phải có cùng kiểu phần tử.
Giá trị trả về
Trả về true nếu biểu thức so sánh là đúng, false nếu sai.
Đặc điểm
- So sánh từ điển: Các toán tử quan hệ thực hiện so sánh từ điển, không phải so sánh giá trị tổng của các phần tử.
- Phụ thuộc vào toán tử quan hệ của kiểu phần tử: Việc so sánh các phần tử của forward_list sử dụng các toán tử quan hệ tương ứng của kiểu phần tử. Do đó, kiểu phần tử của forward_list phải hỗ trợ các toán tử quan hệ.
- Toán tử
!=
: Toán tử!=
trả về kết quả ngược lại với toán tử==
. - Các toán tử khác được định nghĩa dựa trên
\<
và==
: Các toán tử>
,<=
,>=
được định nghĩa dựa trên kết quả của<
và==
. - Phép so sánh từ điển:
- So sánh từng cặp phần tử: Các toán tử quan hệ sẽ so sánh từng cặp phần tử tương ứng của hai forward_list (phần tử đầu tiên của forward_list này với phần tử đầu tiên của forward_list kia, phần tử thứ hai với phần tử thứ hai, v.v.).
- Kết quả của phép so sánh đầu tiên khác nhau: Ngay khi gặp cặp phần tử đầu tiên khác nhau, kết quả của phép so sánh hai forward_list sẽ được quyết định bởi kết quả của phép so sánh hai phần tử đó. Ví dụ, nếu
list1.front() < list2.front()
thì list1 < list2 là true, bất kể các phần tử còn lại. - Chiều dài khác nhau: Nếu một forward_list là tiền tố (prefix) của forward_list kia (nghĩa là tất cả các phần tử của forward_list ngắn hơn đều bằng các phần tử tương ứng của forward_list dài hơn), thì forward_list ngắn hơn được coi là nhỏ hơn.
- Bằng nhau: Hai forward_list được coi là bằng nhau nếu chúng có cùng số phần tử (có thể dùng std::distance để kiểm tra nhanh) và tất cả các phần tử tương ứng đều bằng nhau.
Ví dụ
#include <iostream>
#include <forward_list>
int main() {
std::forward_list<int> list1 = {1, 2, 3};
std::forward_list<int> list2 = {1, 2, 3};
std::forward_list<int> list3 = {1, 2, 4};
std::forward_list<int> list4 = {1, 2};
std::cout << "list1 == list2: " << (list1 == list2) << '\n'; // Output: list1 == list2: 1 (true)
std::cout << "list1 != list3: " << (list1 != list3) << '\n'; // Output: list1 != list3: 1 (true)
std::cout << "list1 < list3: " << (list1 < list3) << '\n'; // Output: list1 < list3: 1 (true)
std::cout << "list4 < list1: " << (list4 < list1) << '\n'; // Output: list4 < list1: 1 (true)
std::cout << "list1 > list4: " << (list1 > list4) << '\n'; // Output: list1 > list4: 1 (true)
std::cout << "list1 >= list2: " << (list1 >= list2) << '\n'; // Output: list1 >= list2: 1 (true)
std::cout << "list1 <= list3: " << (list1 <= list3) << '\n'; // Output: list1 <= list3: 1 (true)
return 0;
}
Các hàm liên quan
swap | Hoán đổi nội dung của hai forward_list với nhau |
unique | Xóa các phần tử trùng lặp liên tiếp khỏi forward_list |