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

std::unordered_multiset::bucket

#include <unordered_set>

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

  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_multiset 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_multiset.
  4. Í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.
  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. 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_multiset. Nó chỉ trả về bucket mà key đó sẽ thuộc về nếu nó tồn tại.
  7. Độ phức tạp: Độ phức tạp trung bình của bucket()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_multiset, 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_set>
#include <string>

int main() {
std::unordered_multiset<std::string> myumset = {"apple", "banana", "orange", "grape", "apple"};

// Lấy chỉ số bucket cho các key
std::cout << "Bucket index for 'apple': " << myumset.bucket("apple") << '\n';
std::cout << "Bucket index for 'banana': " << myumset.bucket("banana") << '\n';
std::cout << "Bucket index for 'grape': " << myumset.bucket("grape") << '\n';
std::cout << "Bucket index for 'kiwi': " << myumset.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_multiset
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_multiset