Мені потрібно зберегти колекцію цілих чисел у межах від 0 до 65535, щоб я міг швидко зробити наступне:
- Вставте нове ціле число
- Вставте діапазон суміжних цілих чисел
- Видаліть ціле число
- Видаліть усі цілі числа нижче цілого числа
- Перевірте, чи є ціле число
Мої дані мають властивість, що вона часто містить пробіли цілих чисел у колекції. Наприклад, колекція може в один момент часу бути:
{ 121, 122, 123, 124, 3201, 3202, 5897, 8912, 8913, 8914, 18823, 18824, 40891 }
Найпростіший підхід полягає лише у використанні збалансованого двійкового дерева, такого як C ++ std :: set, однак, використовуючи це, я не використовую той факт, що у мене часто буває кількість чисел. Можливо, було б краще зберігати колекцію асортиментів? Але це означає, що діапазон повинен бути розбитим, якщо ціле число в його середині буде видалено, або з'єднане разом, якщо заповнений пробіл між двома діапазонами.
Чи існують якісь структури даних, які добре підходили б для цієї проблеми?