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

std::unordered_set::load_factor

#include <unordered_set>

float load_factor() const noexcept;

Trả về hệ số tải (load factor) hiện tại của std::unordered_set. Hệ số tải là tỷ lệ giữa số lượng phần tử và số lượng bucket trong bảng băm.

Tham số

Không có tham số

Giá trị trả về

float

  • Trả về hệ số tải hiện tại của std::unordered_set, là một số thực không âm.

Đặc điểm

  1. Biểu thị độ đầy của bảng băm: Hệ số tải cho biết tỷ lệ giữa số phần tử và số bucket. Khi hệ số tải cao, bảng băm càng "đầy" và khả năng xảy ra đụng độ (collisions) càng cao.
  2. Ảnh hưởng đến hiệu suất: Hệ số tải ảnh hưởng đến hiệu suất của các thao tác trên std::unordered_set. Hệ số tải quá cao có thể làm giảm hiệu suất, đặc biệt là trong trường hợp xấu nhất.
  3. noexcept: load_factor() được đánh dấu là noexcept, nghĩa là nó được đảm bảo không ném ra ngoại lệ nào.
  4. const: load_factor() là một hàm const, nghĩa là nó không thay đổi trạng thái của std::unordered_set.
  5. Tự động điều chỉnh: std::unordered_set tự động điều chỉnh số lượng bucket (rehashing) khi hệ số tải vượt quá max_load_factor() (mặc định là 1.0) để duy trì hiệu suất.
  6. Liên quan đến max_load_factor()rehash(): load_factor() có liên quan mật thiết đến các hàm max_load_factor() (thiết lập hệ số tải tối đa) và rehash() (thay đổi số lượng bucket).
  7. Độ phức tạp: O(1) - thời gian hằng số.

Ví dụ

#include <iostream>
#include <unordered_set>

int main() {
std::unordered_set<int> myset;

std::cout << "Initial load factor: " << myset.load_factor() << '\n'; // Output: Initial load factor: 0 (hoặc một giá trị rất nhỏ)

myset.insert(10);
myset.insert(20);
myset.insert(30);

std::cout << "Load factor after inserting elements: " << myset.load_factor() << '\n';

return 0;
}

Các hàm liên quan

max_load_factorTruy vấn hoặc thiết lập hệ số tải tối đa (maximum load factor) của 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