Member NFOC Ответов: 3

Я не могу сделать новый массив?


Я хочу создать новый arraylist двойной длины, чем существующий, но когда я пытаюсь создать новый массив длины 2*size(array), он выдает мне ошибку, которая является
"выражение должно иметь значение const".
Что же мне делать?

Что я уже пробовал:

int arr[5];
int index;
int n = std::size(arr);

bool insert(int element, int index) {
	if (index<0 && index>n) {
		printf("Enter a valid index:\n");
		return false;
	}
	int const leng = 2*n;

	if (index==n) {
		int new_arr[leng];

	}
	
}

KarstenK

ваш код показывает, что вам действительно нужно выучить язык. Ответ на ваш вопрос не выведет вас из затруднения. ;-)

3 Ответов

Рейтинг:
2

Richard MacCutchan

Вы не можете выделить динамические массивы в стеке таким образом:

int new_arr[leng];

Вы должны использовать C++ new оператор.
int* pnew_arr = new int[leng];


Рейтинг:
15

littleGreenDude

Вы могли бы выделить значительно достаточную сумму для начала (но это тратит впустую память)

Или вы можете использовать указатели (и поместить объект в кучу вместо стека).

Для получения дополнительной информации, пожалуйста, смотрите: Массивы переменной длины в C и C++ - GeeksforGeeks[^]


Рейтинг:
0

Member NFOC

Спасибо вам всем за ответ.
Я действительно нашел решение для создания нового массива т. е.,

int *new_array=новый int[2*n];

спасибо еще раз.


Richard Deeming

Это точно такой же код, как и решение 2!