2016-04-12 24 views
0

C++ 11標準では、このような初期化リストでベクトルを初期化する機会が与えられています。初期化リストを介してコンストラクタ内のクラスメンバー(ベクトル)を初期化する

vector <int> a {3, 5, 6, 2}; 

初期化リストを介してコンストラクタ内のクラスのメンバーであるベクトルを初期化できるかどうかは疑問です。

私はそのようなことを探しましたが、インターネットやここでStack Overflowで見つからなかったので、私はそれを求めなければならないと思いました。私だけでなく、他の人たちも役に立つと願っています。

私はベクトルの静的メンバをクラスにしたくありません。

クラスには、次のようになります。

class Foo 
{ 
    public: 
     vector <int> myvector; 
     //Here should be a constructor 
}; 

それは次のように使用することができます:

Foo aa{1, 2, 3, 6, 1}; // it should initialize a vector 
+2

'はFoo :: Fooの(スタンダード:: initializer_list init_list):(init_list){}' –

+0

レコードに対して、これは..が "新しい" 標準もはやありません以来1.5より新しいものです;) –

+0

@LightnessRacesinOrbitあなたは正しいことを知っています。 – FieryCod

答えて

2

はい必要なものを正確に行い、たとえばhttp://en.cppreference.com/w/cpp/utility/initializer_listを参照してください!あなたはstd::initializer_listを取り込み、それを使ってベクトルを初期化するだけです。

struct Foo { 
    Foo(std::initializer_list<int> l) 
    : _vec{l} { } 

    std::vector<int> _vec; 
}; 

Live on Coliru

+0

あなたの答えに大きな感謝、私はそれを見つけることが本当にbizzareです。 – FieryCod

+1

ええ、特に答えは "関連"の質問リストにあります。 –

1

あなたは、初期化子リストを取るのFooのコンストラクタを定義し、それを渡す必要がありますベクトル。

あなたは

+0

ご回答ありがとうございます。 – FieryCod

関連する問題