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

std::unordered_multimap::bucket_size

#include <unordered_map>

size_type bucket_size(size_type n) const;

Trả về số lượng phần tử hiện có trong một bucket cụ thể.

Tham số

n

  • Chỉ số của bucket cần truy vấn. Chỉ số này phải nằm trong khoảng từ 0 đến bucket_count() - 1.

Giá trị trả về

size_type

  • Trả về số lượng phần tử hiện có trong bucket thứ n.

Đặc điểm

  1. Truy vấn số phần tử trong bucket: bucket_size() cho phép bạn lấy số lượng phần tử trong một bucket cụ thể dựa trên chỉ số của bucket đó.
  2. const: bucket_size() là một hàm const, nghĩa là nó không thay đổi trạng thái của std::unordered_multimap.
  3. Phụ thuộc vào hash function và load factor: Số lượng phần tử trong mỗi bucket phụ thuộc vào hàm băm (hash function) được sử dụng bởi std::unordered_multimap và hệ số tải (load factor) hiện tại.
  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 số lượng phần tử trong từng bucket. Tuy nhiên, thông tin này có thể hữu ích cho việc phân tích hiệu suất và gỡ lỗi liên quan đến bảng băm.
  5. Hành vi không xác định nếu n không hợp lệ: Nếu n không nằm trong khoảng từ 0 đến bucket_count() - 1, hành vi là không xác định.
  6. Độ phức tạp: Độ phức tạp của bucket_size()O(n) trong trường hợp xấu nhất, với n là số phần tử trong bucket đó. Tuy nhiên, trung bình là O(1) nếu hash function được thiết kế tốt và số lượng phần tử trong mỗi bucket không quá lớn.

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}, {"kiwi", 5}, {"apple", 6}
};

// Lấy số lượng bucket hiện tại
unsigned nbuckets = myumm.bucket_count();
std::cout << "myumm has " << nbuckets << " buckets:\n";

// In ra số phần tử của từng bucket
for (unsigned i = 0; i < nbuckets; ++i) {
std::cout << "Bucket " << i << " has " << myumm.bucket_size(i) << " elements.\n";
}

return 0;
}

Các hàm liên quan

bucket_countTrả về số lượng bucket (hay còn gọi là giỏ) hiện tại trong std::unordered_multimap
bucketTrả 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ữ
sizeTrả về số lượng phần tử hiện có trong std::unordered_multimap