2016-02-05 8 views
2

Мне было любопытно, что будет лучшим способом инициализировать массив на C++?Каков наилучший способ объявить массив на C++?

Будет ли это:

int array[50]; 

или

int x; 

cin>> x; //Input a number to initialise the array. 

int array[x]; 

Какой из этих двух будет лучшим вариантом для инициализации массива и почему? Если нет, то есть ли третий способ?

+7

В общем, лучшим способом является использование 'std :: vector'. –

+5

Первый действительный C++, второй - нет. Итак, первый из них - лучший из двух. – juanchopanza

+0

Инициализирует массив. 'int array [50] = {0};' будет лучшим способом инициализировать его, если вам действительно нужен массив. – molbdnilo

ответ

9

Если вы хотите статический массив (константное число элементов), используйте std::array:

std::array<int,50> a; 

Если вы хотите динамический массив (не сопз числа массива), используйте std::vector:

std::vector<int> a(50); 

в этом случае вы можете изменить размер вектора в любое время по resizing:

a.resize(100); 

или просто нажав новые предметы:

a.push_back(5); 

подробнее о std::vector. Он может служить вам больше, чем вы можете себе представить.

P.S. второй код вашего вопроса недействителен (или, по крайней мере, он не является стандартным). Тем не менее, вы можете сделать это вместо:

int x; 
cin>> x; //Input a number to initialise the array. 
std::vector<int> array(x); 
+0

Что делать, если я объявляю stms пространства имен до main? Как это будет работать в этом случае? –

+0

Вы имеете в виду использование пространства имен std; ?? –

+0

Да. Я новичок. :-) –

2

Если вы знаете размер массива во время компиляции, и это не изменится, то самый лучший способ:

std::array<int, 50> arr; 

В противном случае используйте

std::vector<int> arr; 
Смежные вопросы