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

Toán tử quan hệ

#include <list>

// Với a và b là hai list cùng kiểu:
bool operator==(const list& a, const list& b);
bool operator!=(const list& a, const list& b);
bool operator<(const list& a, const list& b);
bool operator>(const list& a, const list& b);
bool operator<=(const list& a, const list& b);
bool operator>=(const list& a, const list& b);

So sánh hai std::list với nhau.

Tham số

a, b

  • Hai std::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 std::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 std::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. Không làm thay đổi list: Các toán tử này không thay đổi nội dung của 2 list đang được so sánh.
  6. Độ phức tạp: Độ phức tạp của việc so sánh hai std::listO(n), với n là số lượng phần tử của std::list ngắn hơn.
  7. 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 std::list (phần tử đầu tiên của std::list này với phần tử đầu tiên của std::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 std::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 std::list là tiền tố (prefix) của std::list kia (nghĩa là tất cả các phần tử của std::list ngắn hơn đều bằng các phần tử tương ứng của std::list dài hơn), thì std::list ngắn hơn được coi là nhỏ hơn.
    4. Bằng nhau: Hai std::list được coi là bằng nhau nếu chúng có cùng kích thước và tất cả các phần tử tương ứng đều bằng nhau.

Ví dụ

#include <iostream>
#include <list>

int main() {
std::list<int> list1 = {1, 2, 3};
std::list<int> list2 = {1, 2, 3};
std::list<int> list3 = {1, 2, 4};
std::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 std::list với nhau
uniqueXóa các phần tử trùng lặp liên tiếp khỏi std::list