신속하게 다음을 수행 할 수 있도록 0에서 65535 범위의 정수에 컬렉션을 유지해야합니다.
- 새로운 정수 삽입
- 연속 정수 범위 삽입
- 정수 제거
- 정수 아래의 모든 정수를 제거
- 정수가 존재하는지 테스트
내 데이터에는 컬렉션에 종종 정수가 포함되어 있습니다. 예를 들어, 특정 시점의 콜렉션은 다음과 같습니다.
{ 121, 122, 123, 124, 3201, 3202, 5897, 8912, 8913, 8914, 18823, 18824, 40891 }
가장 간단한 방법은 C ++ std :: set과 같은 균형 이진 트리를 사용하는 것입니다. 그러나 이것을 사용하면 종종 숫자가 많다는 사실을 활용하지 않습니다. 아마도 범위 모음을 저장하는 것이 더 좋을까요? 그러나 이는 중간에있는 정수가 제거되면 범위를 분할하거나 두 범위 사이의 공간이 채워지면 함께 결합 될 수 있어야 함을 의미합니다.
이 문제에 적합한 기존 데이터 구조가 있습니까?