std::unordered_map::bucket_count
#include <unordered_map>
size_type bucket_count() const noexcept;
Trả về số lượng bucket (hay còn gọi là giỏ) hiện tại trong std::unordered_map. std::unordered_map sử dụng bảng băm (hash table) để lưu trữ các phần tử và bảng băm này được chia thành các bucket.
Tham số
Không có tham số
Giá trị trả về
size_type
- Trả về một giá trị kiểu
size_type
, thường là std::size_t, là một kiểu số nguyên không dấu, đại diện cho số lượng bucket hiện tại trong std::unordered_map.
Đặc điểm
- Số lượng bucket:
bucket_count()
trả về số lượng bucket hiện tại của bảng băm mà std::unordered_map đang sử dụng. - noexcept:
bucket_count()
được đánh dấu lànoexcept
, nghĩa là nó được đảm bảo không ném ra ngoại lệ nào. - const:
bucket_count()
là một hàmconst
, nghĩa là nó không thay đổi trạng thái của std::unordered_map. - Phụ thuộc vào load factor và số phần tử: Số lượng bucket trong std::unordered_map thường tự động thay đổi khi số lượng phần tử thay đổi và khi load factor (tỷ lệ giữa số phần tử và số bucket) vượt quá một ngưỡng nhất định (
max_load_factor()
). - Í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 bucket của std::unordered_map. Tuy nhiên, thông tin này có thể hữu ích cho việc phân tích hiệu suất hoặc khi bạn muốn tinh chỉnh các tham số của bảng băm (ví dụ:
rehash()
,reserve()
). - Độ phức tạp:
O(1)
- thời gian hằng số.
Ví dụ
#include <iostream>
#include <unordered_map>
int main() {
std::unordered_map<std::string, int> myumap;
std::cout << "Initial bucket_count: " << myumap.bucket_count() << '\n';
myumap.insert({"apple", 1});
myumap.insert({"banana", 2});
myumap.insert({"orange", 3});
std::cout << "Bucket_count after inserting elements: " << myumap.bucket_count() << '\n';
myumap.rehash(100); // Yêu cầu unordered_map sử dụng ít nhất 100 bucket
std::cout << "Bucket_count after rehash: " << myumap.bucket_count() << '\n';
return 0;
}
Các hàm liên quan
bucket | 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ữ |
bucket_size | Trả về số lượng phần tử hiện có trong một bucket cụ thể |
load_factor | Trả về hệ số tải (load factor) hiện tại của std::unordered_map |
max_bucket_count | Trả về số lượng bucket tối đa mà std::unordered_map có thể có |