2011-12-16 12 views
24

私はC++のコード(私は、Visual Studio 2010を使用しています)で、次のstruct持っている:私がやりたい何C++でstructの配列を初期化する方法は?

struct mydata 
{ 
    string scientist; 
    double value; 
}; 

は内の配列の初期化と同様に、簡単な方法でそれらを初期化することができることですC#でのC99やクラスの初期化、何かáラ

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

これは構造体の配列のためのC++にできない場合は、私は、オブジェクトの配列のためにそれを行うことができますか?つまり、配列の基になるデータ型はそれほど重要ではありません。リストではなく配列があり、このようにイニシャライザを記述できることが重要です。

+1

それはうまくいかない理由はありません...(btwは '.scientist = ...'になります)試しましたか? – fge

+0

なぜループを避けるのですか? –

+0

@fgeはい、それは集約初期化と呼ばれ、さらに詳細に説明されています。[here](http://en.cppreference.com/w/cpp/language/aggregate_initialization) – pfabri

答えて

46

C++での構文はほとんど同じである(ただ、名前付きパラメータを省略):C++ 03では

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

をアレイ型がaggregateある時はいつでも、この作品。 C++ 11では、これは適切なコンストラクタを持つオブジェクトで動作します。

+1

_uniform initialization_は通常、_list-initialization_フォーム(つまり、 '='なしで)?私は標準の一様な初期化のための参照を見つけることができませんでした。 –

+0

@CharlesBailey:私の用語が間違っている可能性が非常に高いです。そのため、私はその部分を削除しました。 –

+0

@BjörnPollex再言及するのは悪いことではないと思います。 – cjcurrie

関連する問題