Да, с обычным массивом такое делать нельзя. С динамическим , по-моему, тоже. Разве что каждый раз, когда надо менять размер массива, создавать новый и копировать в него влезшие элементы старого
. В голову лезут всякие списки, стеки,... деревья
. Пожалуй, есть одна более подходящая идея: реализовать многомерный динамический вектор. Это указатель на массив примерно [0..9] указателей на массив [0..9] указателей... ...на массив [1..10] элементов. Должно храниться общее число элементов. В таком n-мерном векторе может поместиться до 10^n элементов. Доступ, скажем, к 143-му элементу будет выглядеть p^[0]^[0]^[1]^[4]^[3]. Это будет намного быстрее, чем в списке. Памяти на вектор уйдёт больше, чем на обычный массив, но не так уж намного. Дело в том, что она не выделяется сразу для всех 10^n эл-тов, а по мере их добавления, так что, если не ошибаюсь, для хранения m элементов потребуется m div 10 + m div 100 +... + m div 10^(n-1) + n указателей. Менять границы можно new или delete соответствующего кол-ва указателей. Конечно, реализация несколько сложна, но всё вполне нормально пишется.