Saya perlu menyimpan koleksi pada bilangan bulat dalam kisaran 0 hingga 65535 sehingga saya dapat dengan cepat melakukan hal berikut:
- Masukkan bilangan bulat baru
- Masukkan berbagai bilangan bulat yang berdekatan
- Hapus bilangan bulat
- Hapus semua bilangan bulat di bawah bilangan bulat
- Uji apakah bilangan bulat ada
Data saya memiliki properti yang sering mengandung bilangan bulat dalam koleksi. Misalnya, koleksi mungkin pada satu titik waktu:
{ 121, 122, 123, 124, 3201, 3202, 5897, 8912, 8913, 8914, 18823, 18824, 40891 }
Pendekatan paling sederhana adalah dengan menggunakan pohon biner seimbang seperti C ++ std :: set, namun, dengan menggunakan itu, saya tidak memanfaatkan fakta bahwa saya sering memiliki angka. Mungkin akan lebih baik untuk menyimpan koleksi rentang? Tetapi itu berarti rentang harus dapat dipecah jika bilangan bulat di tengahnya dihapus, atau bergabung bersama jika ruang antara dua rentang diisi.
Apakah ada struktur data yang ada yang cocok untuk masalah ini?
sumber