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

std::unordered_multiset::key_eq

#include <unordered_set>

key_equal key_eq() const;

Trả về một bản sao của hàm so sánh bằng (equality comparison function object) được sử dụng bởi std::unordered_multiset để kiểm tra xem hai key có bằng nhau hay không.

Tham số

Không có tham số

Giá trị trả về

key_equal

  • Trả về một bản sao của hàm so sánh bằng (equality comparison function object) đang được std::unordered_multiset sử dụng. key_equal là một kiểu (thường là functor) được định nghĩa bên trong std::unordered_multiset, cho phép so sánh hai key có bằng nhau hay không.

Đặc điểm

  1. Truy cập hàm so sánh bằng: key_eq() cung cấp cách thức để lấy hàm so sánh bằng đang được sử dụng bởi std::unordered_multiset.
  2. Bản sao: key_eq() trả về một bản sao của hàm so sánh bằng, vì vậy bạn có thể sử dụng nó mà không ảnh hưởng đến std::unordered_multiset.
  3. const: key_eq() là một hàm const, nghĩa là nó không thay đổi trạng thái của std::unordered_multiset.
  4. Không ném ngoại lệ: Hàm key_eq() được quy định không ném ra ngoại lệ.
  5. Phụ thuộc vào cách khởi tạo: Hàm so sánh bằng trả về bởi key_eq() phụ thuộc vào cách bạn khởi tạo std::unordered_multiset. Nếu bạn không chỉ định hàm so sánh bằng khi khởi tạo, std::unordered_multiset sẽ sử dụng std::equal_to theo mặc định.
  6. Kết hợp với hàm băm: std::unordered_multiset sử dụng cả hàm băm và hàm so sánh bằng để quản lý các phần tử. key_eq() cung cấp hàm so sánh bằng, còn hash_function() cung cấp hàm băm.
  7. Ít khi được sử dụng trực tiếp: Trong hầu hết các trường hợp, bạn không cần phải sử dụng key_eq() trực tiếp. std::unordered_multiset tự động sử dụng hàm so sánh bằng khi cần thiết (ví dụ: khi chèn hoặc tìm kiếm phần tử).
  8. Độ phức tạp: O(1) - thời gian hằng số.

Ví dụ

#include <iostream>
#include <unordered_set>
#include <string>

int main() {
std::unordered_multiset<std::string> myumset;

// Lấy hàm so sánh bằng
std::unordered_multiset<std::string>::key_equal eq = myumset.key_eq();

// Kiểm tra xem hai chuỗi có bằng nhau theo tiêu chí của unordered_multiset hay không
if (eq("apple", "apple")) {
std::cout << "'apple' is equal to 'apple'\n"; // Output: 'apple' is equal to 'apple'
}

if (!eq("apple", "banana")) {
std::cout << "'apple' is not equal to 'banana'\n"; // Output: 'apple' is not equal to 'banana'
}

return 0;
}

Các hàm liên quan

hash_functionTrả về một bản sao của hàm băm đang được sử dụng bởi std::unordered_multiset
get_allocatorTrả về một bản sao của bộ cấp phát (allocator) được liên kết với std::unordered_multiset