Есть несколько способов сделать это, я могу придумать.
Я предполагаю, исходя из вашего вопроса, что преобразование ваших char[]
в соответствующие int[]
s является дорогостоящим (вот почему вы хотите избежать выполнения этого вычисления дважды - один раз, чтобы определить размер, и снова, чтобы заполнить содержимое.
Итак, вот как я бы это сделал:
Во-первых, есть ли максимальный размер, который вы можете связать с преобразованием? EX: есть максимальная разница в размере 2 к 1? (Для каждого символа в char [] он может создавать целые числа «до X»?)
Если это так, и использование памяти не является проблемой (вы не ограничены супер) - выделите максимальный размер, заполните его при выполнении перевода и перераспределите, когда вы закончите сократить ваш след памяти.
Если это не так, вы находитесь в более жестких водах, и вам следует обратить внимание на несмежные схемы, такие как связанный список. После того как вы выполнили перевод и создали свой связанный список, вы можете выделить место для вашего массива и посетить каждый элемент в связанном списке, чтобы заполнить массив.