как объявить массив, используя переменную, получая значение переменной в качестве входных данных? Проверить мой код
int a;
cin>>a;
int arr[a];
Я хочу объявить массив в соответствии с размером пользователя. Я новичок в программировании. Что может быть сделано? Правилен ли этот метод?
2 ответа
То, чего вы хотите достичь, называется массивом переменной длины, короче говоря, VLA , который не является частью стандарта С++ .
Что может быть сделано?
Он вызывает неопределенное поведение .
Правилен ли этот метод?
Неа. Лучшая возможность воспользоваться небольшой помощьюstd::vector<>
стоит здесь. Он динамически выделяет запрошенные байты данных, и при желании вы можете инициализировать их требуемыми значениями.
Вы можете добиться этого, как:
int n = 0;
std::cin >> n; // make sure it's a valid size
std::vector<int> a(n);
Если вы хотите, чтобы время выполнения продолжало увеличиваться, просто используйте его
push_back()
метод, и вы можете получить размер вектора через его
size()
.
Вы пометили это C++, и в этом случае есть очень мало оправданий, чтобы не решать это с помощью std::vector.
Если вы должны сделать это в стиле C, вы можете написать:
int a;
cin >> a;
int * arr = (int *)malloc(sizeof(int) * a);
или лучше (согласно комментарию Томаса ниже):
int a;
cin >> a;
int * arr = new int[a];
но вектор определенно предпочтительнее.