Как инициализировать массив struct в C ++? - PullRequest
30 голосов
/ 16 декабря 2011

В моем коде C ++ есть следующее struct (я использую Visual Studio 2010):

struct mydata
{
    string scientist;
    double value;
};

То, что я хотел бы сделать, - это иметь возможность быстро инициализировать их, подобно инициализации массива в C99 или инициализации класса в C #, что-то а-ля :

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

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

1 Ответ

52 голосов
/ 16 декабря 2011

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

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

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

...