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

Toán tử quan hệ

#include <vector>

bool operator==(const vector& lhs, const vector& rhs);
bool operator!=(const vector& lhs, const vector& rhs);
bool operator<(const vector& lhs, const vector& rhs);
bool operator<=(const vector& lhs, const vector& rhs);
bool operator>(const vector& lhs, const vector& rhs);
bool operator>=(const vector& lhs, const vector& rhs);

So sánh hai đối tượng std::vector dựa trên thứ tự từ điển (lexicographical order).

Tham số

const vector& lhs

  • Tham chiếu tới vector bên trái của toán tử.

const vector& rhs

  • Tham chiếu tới vector bên phải của toán tử.
lưu ý
  • Hai vector cần so sánh phải cùng kiểu dữ liệu (ví dụ: std::vector<int> so với std::vector<int>).
  • Không được phép so sánh các vector có kiểu dữ liệu khác nhau (ví dụ: std::vector<int> với std::vector<float>).

Giá trị trả về

  • Trả về giá trị bool biểu thị kết quả của phép so sánh.
    • true: Nếu điều kiện được thỏa mãn.
    • false: Nếu điều kiện không được thỏa mãn.

Đặc điểm

  1. Thứ tự từ điển (lexicographical order): Việc so sánh các phần tử diễn ra tuần tự, từng phần tử một, từ trái sang phải.
  2. Hiệu suất: Việc so sánh hai vector phụ thuộc vào số phần tử trong vector. Thao tác này có độ phức tạp O(n) trong trường hợp xấu nhất (phải duyệt hết tất cả phần tử).

Ví dụ

Toán tử ==!=

std::vector<int> vec1 = {1, 2, 3};
std::vector<int> vec2 = {1, 2, 3};
std::vector<int> vec3 = {3, 2, 1};

bool isEqual = (vec1 == vec2); // true
bool isNotEqual = (vec1 != vec3); // true

Toán tử <, <=, >, và >=

std::vector<int> vec1 = {1, 2, 3};
std::vector<int> vec2 = {1, 2, 3, 4};
std::vector<int> vec3 = {1, 3, 2};

bool isLessThan = (vec1 < vec2); // true
bool isLessThanOrEqual = (vec1 <= vec2); // true
bool isGreaterThan = (vec3 > vec1); // true
bool isGreaterThanOrEqual = (vec2 >= vec1); // true

So sánh với vector chứa chuỗi

#include <iostream>
#include <vector>
#include <string>

int main() {
std::vector<std::string> vec1 = {"apple", "banana"};
std::vector<std::string> vec2 = {"apple", "banana", "cherry"};

if (vec1 < vec2) {
std::cout << "vec1 nhỏ hơn vec2 vì thiếu phần tử 'cherry'.\n";
}

return 0;
}

So sánh vector có kiểu dữ liệu phức tạp

#include <iostream>
#include <vector>
#include <tuple>

int main() {
std::vector<std::tuple<int, char>> vec1 = {{1, 'a'}, {2, 'b'}};
std::vector<std::tuple<int, char>> vec2 = {{1, 'a'}, {2, 'c'}};

if (vec1 < vec2) {
std::cout << "vec1 nhỏ hơn vec2 vì phần tử thứ 2 ('b' < 'c').\n";
}

return 0;
}

Các hàm liên quan

=Gán nội dung
swapHoán đổi nội dung của hai vector