2011-12-16 101 views
24

我有以下的在我的C++代碼struct(我使用Visual Studio 2010):如何在C++中初始化一個struct數組?

struct mydata 
{ 
    string scientist; 
    double value; 
}; 

我想要做的是能在初始化它們以快速的方式,類似於數組初始化C99或類的初始化在C#中,一些點菜

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

如果無法做到這一點在C++中的結構數組,我可以爲對象的數組做呢?換句話說,數組的基礎數據類型並不重要,重要的是我有一個數組,而不是一個列表,並且我可以用這種方式編寫初始化器。

+1

沒有理由爲什麼它不應該工作...(順便說一句,這將是`.scientist = ...`)你試過了嗎? – fge 2011-12-16 13:03:24

+0

爲什麼要避免循環? – 2011-12-16 13:05:46

回答

46

在C++的語法是幾乎完全一樣(只是離開了命名參數):

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

在C++ 03這個工程只要數組類型是aggregate。在C++ 11中,這適用於具有適當構造函數的任何對象。