Как инициализировать массив внутри класса в c++ без использования списков инициализации (что я считаю функцией c++ 11)? Мой компилятор (VS2013) не поддерживает c++ 11 в полной мере, к сожалению.
Visual Studio 2013 поддерживает Initializer lists
, это означает, что вы можете легко сделать:
--C++11: default initialization using {}
int n{}; --zero initialization: n is initialized to 0
int *p{}; --initialized to nullptr
double d{}; --initialized to 0.0
char s[12]{}; --all 12 chars are initialized to '\0'
string s{}; --same as: string s;
char *p=new char [5]{};
vector<int> vi {1,2,3,4,5,6};
vector<double> vd {0.5, 1.33, 2.66};
etc
Или другие формы, которые поддерживаются в С++ 11.
если вы не любите его, вы также можете использовать более старые методы, такие как:
Вы можете просто сделать следующее:
int bar [5] = { 10, 20, 30 };
Что создает такой массив:
---------------------------------
| 10 | 20 | 30 | 0 | 0 |
---------------------------------
Вы также можете:
int baz [5] = { };
что означает:
-------------------------------
| 0 | 0 | 0 | 0 | 0 |
-------------------------------
или у вас может быть:
int foo [] = { 16, 2, 77, 40, 12 };
что означает:
----------------------------------
| 16 | 2 | 77 | 40 | 12 |
----------------------------------
Если вы имеете дело с классами и их объектами, вы можете просто вызвать свой конструктор следующим образом:
Point aPoint[3] = {
Point( 3, 3 ),
Point( 13, 6 ),
Point( 32, 98 )
};
Все прежние правила применимы и к этой форме. Если вы объявите статический массив, они будут инициализированы на основе их типов по умолчанию (например, int по умолчанию - 0 и т.д.),