Cùng tìm hiểu về bucket trong unordered_map C++. Bạn sẽ học được khái niệm Bucket trong C++ là gì cũng như các cách xử lý bucket trong unordered_map C++ sau bài học này.
Bucket trong C++ là gì
Bucket trong C++ là một không gian bộ nhớ trong bảng hash của container (unordered_map), trong đó các phần tử sẽ được chỉ định dựa trên giá trị hash của khóa của chúng. Phạm vi giới hạn hợp lệ của các bucket là từ 0 đến bucket_count - 1.
Trong bài Unordered_map trong C++ là gì chúng ta đã biết các phần tử trong unordered_map lại được lưu trữ dựa trên giá trị hash của khóa chứ không phải dựa trên thứ tự của các khóa.
Và các giá trị hash của khóa này sẽ được quản lý theo bucket mà Kiyoshi vừa giới thiệu ở trên.
Lấy vị trí bucket chứa phần tử có khóa chỉ định bằng hàm unordered_map bucket
Hàm bucket là một hàm thành viên trong class std:unordered_map, có tác dụng lấy vị trí bucket chứa phần tử có khóa chỉ định.
Chúng ta sử dụng hàm bucket để lấy số bucket chứa phần tử có khóa chỉ định trong unordered_map C++ với cú pháp như sau:
mp.bucket(k);
Trong đó mp
là unordered_map và k
là khóa cần tìm số bucket chứa phần tử được xác định bởi nó.
Hàm bucket sẽ trả về vị trí (số thứ tự) của bucket chứa phần tử có khóa k được chỉ định.
Ví dụ cụ thể, chúng ta lấy số bucket chứa phần tử có khóa chỉ định bằng hàm bucket như sau:
|
Và kết quả:
Phần tử [gamma:30] nằm tại bucket số #2 |
Lấy số bucket tạo ra bởi unordered_map bằng hàm bucket_count
Hàm bucket_count là một hàm thành viên trong class std:unordered_map, có tác dụng lấy số bucket được tạo ra từ unordered_map.
Chúng ta sử dụng hàm bucket_count để lấy số bucket có trong unordered_map C++ với cú pháp như sau:
mp.bucket_count();
Trong đó mp
là unordered_map cần đếm số bucket đã được tạo ra từ nó.
Hàm bucket_count sẽ trả về số bucket được tạo ra từ unordered_map chỉ định.
Ví dụ cụ thể, chúng ta lấy số bucket tạo ra bởi unordered_map bằng hàm bucket_count như sau:
|
Và kết quả:
Có tất cả 13 buckets. |
Lấy số phần tử lưu trữ trong bucket bằng hàm bucket_size
Hàm bucket_size là một hàm thành viên trong class std:unordered_map, có tác dụng lấy số phần tử của unordered_map được lưu trữ trong bucket.
Chúng ta sử dụng hàm bucket_size để lấy số phần tử lưu trữ trong bucket với cú pháp như sau:
mp.bucket_size(i);
Trong đó mp
là unordered_map và i
là số thứ tự của bucket cần đếm số phần tử trong nó.
Hàm bucket_size sẽ trả về số phần tử của unordered_map được lưu trữ trong bucket có số thứ tự chỉ định.
Ví dụ cụ thể, chúng ta lấy số phần tử lưu trữ trong bucket bằng hàm bucket_size như sau:
|
Và kết quả:
Có tất cả 13 buckets. |
Tổng kết
Trên đây Kiyoshi đã hướng dẫn bạn về bucket trong C++ rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.
Và hãy cùng tìm hiểu những kiến thức sâu hơn về C++ trong các bài học tiếp theo.
URL Link
HOME › lập trình c++ cơ bản dành cho người mới học lập trình>>26. unordered_map trong c++