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

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

  1. 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ề.
  2. 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.
  3. const: bucket() là một hàm const, nghĩa là nó không thay đổi trạng thái của std::unordered_set.
  4. Í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.
  5. Giá trị trả về hợp lệ: Giá trị trả về của bucket() luôn nằm trong khoảng từ 0 đến bucket_count() - 1.
  6. Độ phức tạp: Độ phức tạp trung bình của bucket()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ới O(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

findTì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_sizeTrả về số lượng phần tử hiện có trong một bucket cụ thể
bucket_countTrả về số lượng bucket (hay còn gọi là giỏ) hiện tại trong std::unordered_set