Ich muss eine Sammlung von Ganzzahlen im Bereich von 0 bis 65535 führen, damit ich schnell Folgendes tun kann:
- Fügen Sie eine neue Ganzzahl ein
- Fügen Sie eine Reihe zusammenhängender Ganzzahlen ein
- Entfernen Sie eine Ganzzahl
- Entfernen Sie alle Ganzzahlen unter einer Ganzzahl
- Testen Sie, ob eine Ganzzahl vorhanden ist
Meine Daten haben die Eigenschaft, dass sie häufig Ganzzahlen in der Sammlung enthalten. Zum Beispiel könnte die Sammlung zu einem bestimmten Zeitpunkt sein:
{ 121, 122, 123, 124, 3201, 3202, 5897, 8912, 8913, 8914, 18823, 18824, 40891 }
Der einfachste Ansatz besteht darin, nur einen ausgeglichenen Binärbaum wie den C ++ std :: set zu verwenden. Dabei nutze ich jedoch nicht die Tatsache, dass ich häufig Zahlenläufe habe. Vielleicht wäre es besser, eine Sammlung von Sortimenten aufzubewahren? Dies bedeutet jedoch, dass ein Bereich aufgelöst werden kann, wenn eine Ganzzahl in seiner Mitte entfernt wird, oder zusammengefügt werden muss, wenn der Abstand zwischen zwei Bereichen ausgefüllt wird.
Gibt es vorhandene Datenstrukturen, die für dieses Problem gut geeignet wären?
quelle