ฉันต้องการเก็บสะสมจำนวนเต็มในช่วง 0 ถึง 65535 เพื่อที่ฉันจะสามารถทำสิ่งต่อไปนี้ได้อย่างรวดเร็ว:
- ใส่จำนวนเต็มใหม่
- แทรกช่วงของจำนวนเต็มต่อเนื่อง
- ลบจำนวนเต็ม
- ลบจำนวนเต็มทั้งหมดด้านล่างเป็นจำนวนเต็ม
- ทดสอบว่ามีจำนวนเต็มหรือไม่
ข้อมูลของฉันมีคุณสมบัติที่มักจะมีจำนวนเต็มในคอลเลกชัน ตัวอย่างเช่นการรวบรวมอาจ ณ เวลาหนึ่งจะเป็น:
{ 121, 122, 123, 124, 3201, 3202, 5897, 8912, 8913, 8914, 18823, 18824, 40891 }
วิธีที่ง่ายที่สุดคือการใช้ต้นไม้ไบนารีแบบสมดุลเช่น C ++ std :: set อย่างไรก็ตามโดยที่ฉันไม่ได้ใช้ประโยชน์จากความจริงที่ว่าฉันมักจะมีจำนวนของตัวเลข บางทีอาจเป็นการดีกว่าที่จะเก็บสะสมของช่วง? แต่นั่นหมายความว่าช่วงจะต้องสามารถแยกย่อยได้ถ้าจำนวนเต็มที่อยู่ตรงกลางถูกลบออกหรือรวมเข้าด้วยกันถ้าช่องว่างระหว่างสองช่วงเต็ม
มีโครงสร้างข้อมูลใดที่มีอยู่ซึ่งเหมาะสำหรับปัญหานี้หรือไม่?