std::unordered_set::bucket
#include <unordered_set>
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).
size_type bucket(const key_type& key) const;
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_set 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_set. - Ít khi 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
. - Độ phức tạp: Độ phức tạp trung bình của
bucket()
làO(1)
(thời gian hằng số), trong trường hợp xấu nhất (khi tất cả phần tử đều băm vào cùng một bucket) có thể lên tớiO(n)
.
Ví dụ
#include <iostream>
#include <unordered_set>
#include <string>
int main() {
std::unordered_set<std::string> myset = {"apple", "banana", "orange", "grape"};
// Lấy chỉ số bucket cho các key
std::cout << "Bucket index for 'apple': " << myset.bucket("apple") << '\n';
std::cout << "Bucket index for 'banana': " << myset.bucket("banana") << '\n';
std::cout << "Bucket index for 'grape': " << myset.bucket("grape") << '\n';
std::cout << "Bucket index for 'kiwi': " << myset.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ó giá trị bằng với giá trị cho trước trong std::unordered_set |
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_set |