Tiered vector оказался крепким орешком. Ситуацию усугубляет то, что я реализую не в точности то, что в PDF'ке: описаны только вставка и удаление одного элемента, а для практических нужд, конечно, желательно и вставка нескольких подряд из вектора в вектор, и Tiered Vector по своему устройству позволяет это, но запрограммировать это нетривиально. Например, если размер блока 1024 элементов, и нужно вставить 1023 элемента, то выгоднее на уровне 2 раздвинуть вперёд, а потом на уровне 1 сдвинуть назад. При этом может потребоваться временно выделить память на несколько звеньев, которые на время могут выйти за границы выделенного пространства, но это всё равно будет выгоднее, чем делать сдвиг на 1023 на первом уровне. Tiered Vector похож на калейдоскоп из калейдоскопов, и пока я об этом думаю, у меня у самого мозг превращается в калейдоскоп.
Предположительно, сделать хорошую реализацию TV так же трудно, как написать хороший решатель японских кроссвордов, не имея опыта их решения. Вчера, чтобы набраться опыта, порисовал на миллиметровке, но вариантов разобрал мало. Пожалуй, забью, но не забуду.