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