Создание массива не зная его будущий размер
Задача такова, вводится последовательность чисел оканчивающаяся нулем, например: 1 2 3 4 5 0, так вот, я не имею понятия сколько будет продолжаться ввод чисел отличных от нуля. Я хочу эти числа хранить в массиве. По логике я:
// объявляю массив.
int[] array;
// решаю наполнять его через цикл.
int i = 0;
int j = scanner.nextInt();
while (j != 0) {
array[i] = j;
j = scanner.nextInt();
++i;
}
По мне очень логичное решение. Я понимаю, что если j изначально будет 0, то массива так и останется неинициализированным. По итогу, как поступают в данном случае? Спасибо!
Ответы (2 шт):
В c++:
используем контейнеры stl:
std::vector,std::listи т.д.сначала определяем сколько элементов нужно, потом создаем динамический массив:
int* arr = new int[arr_size];
в python:
- используем список
list
и т.д.
При достижении конца массива как правило создают новый, в два раза больше текущего, копируют туда данные и продолжают наполнять до достижения конца. Дальше всё повторяется.