Adaptive Blocks: A High Performance Data Structure