Как инициализировать массив структуры в С++?
У меня есть следующий struct
в моем коде на С++ (я использую Visual Studio 2010):
struct mydata
{
string scientist;
double value;
};
Я хотел бы сделать это, чтобы быстро инициализировать их, подобно инициализации массива в C99 или инициализации класса на С#, что-то á la:
mydata data[] = { { scientist = "Archimedes", value = 2.12 },
{ scientist = "Vitruvius", value = 4.49 } } ;
Если это невозможно в С++ для массива структур, могу ли я сделать это для массива объектов? Другими словами, основной тип данных для массива не так важен, важно, чтобы у меня был массив, а не список, и я могу писать инициализаторы таким образом.
Ответы
Ответ 1
Синтаксис в С++ почти точно такой же (просто оставьте именованные параметры):
mydata data[] = { { "Archimedes", 2.12 },
{ "Vitruvius", 4.49 } } ;
В С++ 03 это работает всякий раз, когда тип массива aggregate. В С++ 11 это работает с любым объектом, который имеет соответствующий конструктор.