Подтвердить что ты не робот

Как инициализировать массив структуры в С++?

У меня есть следующий struct в моем коде на С++ (я использую Visual Studio 2010):

struct mydata
{
    string scientist;
    double value;
};

Я хотел бы сделать это, чтобы быстро инициализировать их, подобно инициализации массива в C99 или инициализации класса на С#, что-то á la:

mydata data[] = { { scientist = "Archimedes", value = 2.12 }, 
                  { scientist = "Vitruvius", value = 4.49 } } ;

Если это невозможно в С++ для массива структур, могу ли я сделать это для массива объектов? Другими словами, основной тип данных для массива не так важен, важно, чтобы у меня был массив, а не список, и я могу писать инициализаторы таким образом.

4b9b3361

Ответ 1

Синтаксис в С++ почти точно такой же (просто оставьте именованные параметры):

mydata data[] = { { "Archimedes", 2.12 }, 
                  { "Vitruvius", 4.49 } } ;

В С++ 03 это работает всякий раз, когда тип массива aggregate. В С++ 11 это работает с любым объектом, который имеет соответствующий конструктор.