Возможно, не будет более элегантного подхода, если только не будут сделаны предположения относительно порядка данных.
В какой-то момент вы должны создать каждый из N новых контейнеров.
В какой-то момент вы также должны добавить необходимые элементы в эти контейнеры N.
Этих двух вещей не избежать.В вашем подходе есть и то, и другое, и, следовательно, оно доказано минимальным.
Небольшое предостережение заключается в том, что копии массива блоков немного быстрее, чем итерационные копии, поэтому, если вы знаете, что большие блоки одинаковы, тоВы можете сделать немного более быструю копию для этих блоков.Но обычно, чтобы получить эту информацию, вы должны сначала посетить и проанализировать данные.Поэтому вместо того, чтобы посещать и анализировать, вы должны просто посетить и вставить.