Tôi đã cố gắng hiểu tại sao bảng băm (các bộ chứa không theo thứ tự như unordered_map hoặc unordered_set) không cung cấp giao diện truy vấn hoặc thiết lập hệ số tải tối thiểu.Tại sao các thùng chứa không có thứ tự cung cấp một giao diện để xác định hệ số tải tối thiểu?
Say c là một unordered_set, tôi có thể sử dụng
c.max_load_factor()
để truy vấn
và
c.max_load_factor(val)
cho khung cảnh.
Tại sao C++ 11 không cung cấp giao diện truy vấn min_load_factor? Có chi tiết triển khai nào, điều này sẽ giải thích?
Ngoài ra, C++ STL bởi Josuttis, nói rằng:
Yếu tố tải trọng tối thiểu, được sử dụng để buộc rehashing khi số lượng các yếu tố trong co lại chứa không thể bị ảnh hưởng.
Khi đoán, việc loại bỏ các phần tử không phải cấp phát bộ nhớ và không thể thất bại (có thể trừ khi một trình phá hủy bị ném, trong trường hợp này bạn đổ lỗi cho loại phần tử thay vì vùng chứa). Tôi không biết liệu đó có phải là lý do thực sự hay không, có thể có một lý do khác mạnh hơn. –
@SteveJessop: Tôi có thể nói nó phù hợp với một số các thùng chứa khác: không phải 'vector' cũng như' deque' sẽ tự động thu nhỏ. –
Yếu tố tải tối thiểu có nghĩa là gì? Làm thế nào nhỏ nó nhận được trước khi kích thước lại của nó? – andre