Saya sedang membaca tentang C # ImmutableSortedDictionary
di System.Collections.Immutable
dan berpikir tentang cara menerapkannya dalam program saya. Saya sangat suka C ++ lower_bound
dan upper_bound
(lihat di sini ), dan saya agak berharap untuk melihat sesuatu semacam itu untuk rentang pencarian. Namun, metode serupa tampaknya tidak ada dalam dokumentasi . Apakah saya melewatkan sesuatu? Atau apakah MS benar-benar menyediakan kamus yang diurutkan tanpa akses yang efisien ke rentang yang diurutkan? Itu tidak persis seperti sesuatu yang bisa dilakukan pada salah IEnumerable
satu kunci seperti mengatakan metode ekstensi, jadi saya agak bingung saya tidak melihat sesuatu yang disediakan langsung oleh koleksi.
ImmutableList<T>
kelas juga diimplementasikan sebagai pohon AVL. Dari kode sumber :/// The root node of the AVL tree that stores this set.
ImmutableList<T>
(didukung oleh pohon AVL) dibandingkan ImmutableArray<T>
(didukung oleh array), menurut dokumentasi . Alasan untuk menggunakan daftar tidak berubah: 1) Memperbarui data adalah umum atau jumlah elemen tidak diharapkan kecil. 2) Memperbarui koleksi lebih penting daripada kinerja iterasi konten.
IBinarySearchTree<K,V>
implementasinya terlihat lebih dekat dengan apa yang saya harapkan. Aku ingin tahu apakah dia pernah mempermainkannya lebih jauh?