Nishant Batra Ответов: 2

Может ли C++ иметь массив переменной длины, как работала моя следующая программа


i was told that arrays cant work like this but this has worked for me even with declaring with variable sized array in codeblocks. how so?


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

<pre>#include <iostream>
using namespace std;

int main() {
    int a;
    cin>>a;
   int arr[a];

   for(int i=0;i<a;i++)
   {
       cin>>arr[i];
   }
   cout<<arr[2];
   return 0;
}

2 Ответов

Рейтинг:
2

Afzaal Ahmad Zeeshan

Это не массив переменного размера, вы указываете размер массива,

cin >> a;
int arr[a]; // Right here.

Попробуйте сделать что-нибудь другое, например,
int arr[5];

cin >> a;

// Try adding this to the array now, 
int arr[a]; // See what happens.

Хотя, да, это массив динамического размера, но не а массив переменных размеров Существует огромная разница между ними обоими, и они одновременно полезны и вредны во многих отношениях. Что касается существования массивов переменного размера, то этого понятия нет даже в других языках высокого уровня, таких как C#, Java. У них также есть контейнеры (список и т. д.), которые заботятся о коллекциях, которые растут или уменьшаются во время выполнения.

Если вам нужен массив переменного размера, поищите векторы в C++. Вектор-это массив переменного размера, он поддерживается массивом, но его размер может изменяться во время выполнения — размер вашего массива не может быть изменен во время выполнения, только указан при создании.

вектор-ссылка на C++ [^]


Рейтинг:
2

Jochen Arndt

Вероятно, вы используете компилятор GNU, который поддерживает их для C++:

Автоматические массивы переменной длины разрешены в ISO C99, а в качестве расширения GCC принимает их в режиме C90 и в C++.