как добавить длину массива через параметр функции в C++
void getArray(int lenArray) {
int arr[lenArray];
// ошибка требует что значение длины было константой, а мне надо передать длину именно
//из параметра lenArray
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Вариантов много.
int * arr = new int[lenArray];
Минус в том, что надо не забыть сделать delete[]arr;, иначе будет утечка памяти.
Если очень нужен именно массив в стеке? а тип при этом POD, можно прибегнуть к нестандарту в смысле С++, но имеющемуся по сути везде вызову alloca, который выделяет память в стеке, так что освобождать ее не надо:
int * arr = (int*)alloca(sizeof(int)*lenArray);
Ну и, наконец, самое логичное при использовании С++ решение — вектор (можно даже с инициализатором :)):
vector<int> arr(lenArray, initialValue);
, initialValue можно и опустить.
Стек особо не занимает, освобождать не надо... словом, можно просто использовать, и не думать об обслуживании.