std::unordered_multimap::bucket
#include <unordered_map>
size_type bucket(const key_type& key) const;
Trả về chỉ số của bucket mà phần tử có key bằng với giá trị key
cho trước được lưu trữ (hoặc sẽ được lưu trữ nếu nó được chèn vào).
Tham số
key
- Giá trị của key cần xác định bucket.
Giá trị trả về
size_type
- Trả về chỉ số của bucket (một số nguyên không dấu) mà phần tử có key bằng
key
được lưu trữ (hoặc sẽ được lưu trữ).
Đặc điểm
- Xác định bucket dựa trên key:
bucket()
cho phép bạn xác định bucket mà một phần tử với key cho trước thuộc về. - Phụ thuộc vào hàm băm và số bucket: Bucket mà một phần tử thuộc về được xác định bởi hàm băm (hash function) của std::unordered_multimap và số lượng bucket hiện tại.
- const:
bucket()
là một hàmconst
, nghĩa là nó không thay đổi trạng thái của std::unordered_multimap. - Í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 quan tâm đến bucket của từng phần tử. Tuy nhiên, hàm này có thể hữu ích cho việc gỡ lỗi, phân tích hiệu suất hoặc khi bạn cần can thiệp sâu hơn vào cách thức hoạt động của bảng băm.
- Giá trị trả về hợp lệ: Giá trị trả về của
bucket()
luôn nằm trong khoảng từ 0 đếnbucket_count() - 1
. - Không kiểm tra tồn tại: Hàm
bucket()
không kiểm tra sự tồn tại của key trong std::unordered_multimap. Nó chỉ trả về bucket mà key đó sẽ thuộc về nếu nó tồn tại. - Độ phức tạp: Độ phức tạp trung bình của
bucket()
làO(1)
(thời gian hằng số). Trường hợp xấu nhất có thể làO(n)
, với n là số phần tử trong std::unordered_multimap, nhưng điều này hiếm khi xảy ra với một hàm băm tốt.
Ví dụ
#include <iostream>
#include <unordered_map>
#include <string>
int main() {
std::unordered_multimap<std::string, int> myumm = {
{"apple", 1},
{"banana", 2},
{"orange", 3},
{"grape", 4},
{"apple", 5}
};
// Lấy chỉ số bucket cho các key
std::cout << "Bucket index for 'apple': " << myumm.bucket("apple") << '\n';
std::cout << "Bucket index for 'banana': " << myumm.bucket("banana") << '\n';
std::cout << "Bucket index for 'grape': " << myumm.bucket("grape") << '\n';
std::cout << "Bucket index for 'kiwi': " << myumm.bucket("kiwi") << '\n'; // Key không tồn tại
return 0;
}
Các hàm liên quan
find | Tìm kiếm một phần tử có key bằng với giá trị key cho trước trong std::unordered_multimap |
bucket_size | Trả về số lượng phần tử hiện có trong một bucket cụ thể |
bucket_count | Trả về số lượng bucket (hay còn gọi là giỏ) hiện tại trong std::unordered_multimap |