Muszę przechowywać kolekcję liczb całkowitych z zakresu od 0 do 65535, aby móc szybko wykonać następujące czynności:
- Wstaw nową liczbę całkowitą
- Wstaw zakres ciągłych liczb całkowitych
- Usuń liczbę całkowitą
- Usuń wszystkie liczby całkowite poniżej liczby całkowitej
- Sprawdź, czy występuje liczba całkowita
Moje dane mają tę właściwość, że często zawierają ciągi liczb całkowitych w kolekcji. Na przykład kolekcja może w pewnym momencie być:
{ 121, 122, 123, 124, 3201, 3202, 5897, 8912, 8913, 8914, 18823, 18824, 40891 }
Najprostszym podejściem jest użycie zrównoważonego drzewa binarnego, takiego jak C ++ std :: set, jednak korzystając z tego, nie wykorzystuję faktu, że często mam serie liczb. Być może lepiej byłoby przechowywać kolekcję zakresów? Oznacza to jednak, że zasięg musi zostać podzielony, jeśli liczba całkowita w jego środku zostanie usunięta, lub połączony razem, jeśli zostanie wypełniona przestrzeń między dwoma zakresami.
Czy istnieją jakieś struktury danych, które byłyby odpowiednie dla tego problemu?
źródło