Chuyển tới nội dung chính

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

  1. 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ử.
  2. 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ệ.
  3. Toán tử !=: Toán tử != trả về kết quả ngược lại với toán tử ==.
  4. Các toán tử khác được định nghĩa dựa trên \<==: Các toán tử >, <=, >= được định nghĩa dựa trên kết quả của <==.
  5. Phép so sánh từ điển:
    1. 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.).
    2. 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.
    3. 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.
    4. 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

swapHoán đổi nội dung của hai forward_list với nhau
uniqueXóa các phần tử trùng lặp liên tiếp khỏi forward_list