Tôi đã đọc về C # 's ImmutableSortedDictionary
trong System.Collections.Immutable
và suy nghĩ về làm thế nào để áp dụng nó trong chương trình của tôi. Tôi khá thích C ++ lower_bound
và upper_bound
(xem ở đây ), và tôi đã mong đợi được thấy thứ gì đó tương tự cho việc tra cứu phạm vi. Tuy nhiên, các phương pháp tương tự dường như vắng mặt một cách kỳ lạ trong tài liệu . Tui bỏ lỡ điều gì vậy? Hay MS thực sự cung cấp một từ điển được sắp xếp mà không có quyền truy cập hiệu quả vào các phạm vi được sắp xếp? Điều đó không chính xác giống như một cái gì đó mà người ta có thể làm trên một IEnumerable
phím như nói một phương thức mở rộng, vì vậy tôi hơi bối rối Tôi không thấy thứ gì được cung cấp trực tiếp bởi bộ sưu tập.
ImmutableList<T>
lớp học cũng được thực hiện như một cây AVL. Từ mã nguồn :/// The root node of the AVL tree that stores this set.
ImmutableList<T>
(được hỗ trợ bởi cây AVL) so với ImmutableArray<T>
(được hỗ trợ bởi một mảng), theo tài liệu . Lý do nên sử dụng danh sách không thay đổi: 1) Cập nhật dữ liệu là phổ biến hoặc số lượng phần tử không được mong đợi là nhỏ. 2) Cập nhật bộ sưu tập có hiệu suất quan trọng hơn việc lặp lại nội dung.
IBinarySearchTree<K,V>
nó thực hiện gần hơn với những gì tôi mong đợi. Tôi tự hỏi nếu anh ấy đã từng mày mò về nó hơn nữa?