В C++ массив объявляется к примеру int/char array[число элементов] ; а если я не знаю сколько элементов будет?
как тогда объявить массив? int/char array[]; ? Скажем при парсинге?
как тогда объявить массив? int/char array[]; ? Скажем при парсинге?
Тогда создаешь указатель, а когда будет ясно, сколько нужно - выделяешь под него память:
int *a,b;
cin >> b;
a=new int[ b];//выделяем b элементов
....//работаем с массивом
delete []a;//и не забываем освободить память!
Впрочем, в новом стандарте C++11 можно и просто
int b;
cin>>b;
int a[ b ];
Есть два варианта:
а) объявить массив с гарантированным запасом по длине
б) использовать динамические массивы, которые автоматически увеличиваются в длине, если ее нехватает. В C++ этот тип массивов называется vector.
не знаешь - выделяй память динамически
malloc / free
int a[] = malloc(sizeof(int)*1000);
free(a);
new / delete
int a[] = new int[1000];
delete a;
или используй std::vector и компанию
use std;
std::vector
сделать с запасом, весь не заполнять, не подходит?
правильнее будет, сначало кодом определить сколько елементов. но лучше выложить часть кода. я узал яву, там при парсере ввообще не указывал ограничения элементов
Надо рассчитать какое число элементов будет максимум и запросить у windows оперативки через HeapAlloc, а после использования освободить с помощью HeapFree. При расчете объёма, не забудь пересчитать в байты размер одного элемента, а потом перемножить на их (элементов) максимальное количество, это число и передашь функции HeapAlloc.