web-dev-qa-db-ja.com

C ++で構造体の配列を初期化する方法は?

C++コードに次のstructがあります(Visual Studio 2010を使用しています)。

struct mydata
{
    string scientist;
    double value;
};

私がやりたいのは、C99での配列の初期化やC#でのクラスの初期化に似た迅速な方法でそれらを初期化できるようにすることですála

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

これがC++で構造体の配列に対して不可能な場合、オブジェクトの配列に対して行うことはできますか?つまり、配列の基礎となるデータ型はそれほど重要ではなく、リストではなく配列を持ち、この方法で初期化子を作成できることが重要です。

30

C++の構文はほぼ同じです(名前付きパラメーターは省略します)。

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

C++ 03では、これはarray-typeが aggregate の場合に常に機能します。 C++ 11では、これは適切なコンストラクターを持つオブジェクトで機能します。

52
Björn Pollex