Как в C++ создать массив переменного размера?

Как можно создать массив из n элементов, вводимых пользователем, вместо вектора в С++?
  • 21 апреля 2024 г. 12:50
Ответы на вопрос 3
1. Создание массива переменного размера в C++:

В C++ нельзя создать массив переменного размера при объявлении переменной. Вместо этого можно использовать динамическое выделение памяти с помощью оператора "new". Например:

```cpp
int n;
cout << "Введите размер массива: ";
cin >> n;

int* arr = new int[n]; // Выделение памяти для массива из n элементов

// Использование массива
arr[0] = 1;
arr[1] = 2;
// ...

delete [] arr; // Освобождение памяти после использования массива
```

2. Создание массива из n элементов, вводимых пользователем:

Для создания массива из n элементов, вводимых пользователем, можно использовать динамическое выделение памяти и цикл для заполнения массива. Например:

```cpp
int n;
cout << "Введите количество элементов массива: ";
cin >> n;

int* arr = new int[n]; // Выделение памяти для массива из n элементов

// Заполнение массива
for (int i = 0; i < n; i++) {
    cout << "Введите элемент #" << i << ": ";
    cin >> arr[i];
}

// Использование массива
for (int i = 0; i < n; i++) {
    cout << "arr[" << i << "] = " << arr[i] << endl;
}

delete [] arr; // Освобождение памяти после использования массива
```

При использовании динамического выделения памяти обязательно следует освободить память с помощью оператора "delete" после завершения работы с массивом, чтобы избежать утечек памяти.
Можно через new[] выделить массив: 
cin >> n;
int *array = new int[n];
// ввод, и работа с массивом.

// не забудьте в конце удалить выделенную память.
delete[] array;
Вектор лишь класс, который предоставляет удобный способ работать с базовой структурой данных типа массив, только динамический (количество элементов можно изменить в момент исполнения программы) 
Невозможно создать массив переменного числа элементов на этапе компиляции

Так что есть два выхода:
1. Создать массив со статически определенным количеством элементов (например, 100), но заведомо большим, чем введет пользователь (но опять же, это важно проверять)
2. Создать динамический массив, хранящий данные в куче (используя std::vector или просто new/malloc)

https://stackoverflow.com/questions/68073934/how-t...
Похожие вопросы