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

std::unordered_multimap::hash_function

#include <unordered_map>

hasher hash_function() const;

Trả về một bản sao của hàm băm (hash function object) đang được sử dụng bởi std::unordered_multimap.

Tham số

Không có tham số

Giá trị trả về

hasher

  • Trả về một bản sao của hàm băm (hash function object) đang được std::unordered_multimap sử dụng. hasher là một kiểu (thường là functor) được định nghĩa bên trong std::unordered_multimap, cho phép tính toán giá trị băm cho các key.

Đặc điểm

  1. Truy cập hàm băm: hash_function() cung cấp cách thức để lấy hàm băm đang được sử dụng bởi std::unordered_multimap.
  2. Bản sao: hash_function() trả về một bản sao của hàm băm, vì vậy bạn có thể sử dụng nó mà không ảnh hưởng đến std::unordered_multimap.
  3. const: hash_function() là một hàm const, nghĩa là nó không thay đổi trạng thái của std::unordered_multimap.
  4. Không ném ngoại lệ: Hàm hash_function() đượ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 băm trả về bởi hash_function() phụ thuộc vào cách bạn khởi tạo std::unordered_multimap. Nếu bạn không chỉ định hàm băm khi khởi tạo, std::unordered_multimap sẽ sử dụng std::hash theo mặc định.
  6. Í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 hash_function() trực tiếp. std::unordered_multimap tự động sử dụng hàm băm để quản lý các phần tử.
  7. Hữu ích cho việc gỡ lỗi và phân tích: hash_function() có thể hữu ích cho việc gỡ lỗi hoặc phân tích hiệu suất của bảng băm, hoặc khi bạn muốn sử dụng cùng một hàm băm cho các mục đích khác ngoài phạm vi của std::unordered_multimap.
  8. Độ phức tạp: O(1) - thời gian hằng số.

Ví dụ

#include <iostream>
#include <unordered_map>
#include <string>

int main() {
std::unordered_multimap<std::string, int> myumm;

// Lấy hàm băm
std::unordered_multimap<std::string, int>::hasher fn = myumm.hash_function();

// Tính toán giá trị băm cho một số chuỗi
std::cout << "Hash value for 'apple': " << fn("apple") << '\n';
std::cout << "Hash value for 'banana': " << fn("banana") << '\n';

return 0;
}

Các hàm liên quan

key_eqTrả về một bản sao của hàm so sánh bằng được sử dụng bởi std::unordered_multimap để kiểm tra xem hai key có bằng nhau hay không
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_multimap