2016-10-17 6 views
0

私はC++入門第5回を読んでいると、コンテナに関する章では、割り当てについて何かを言う、それはここに引用されています:配列にイニシャライザリストを割り当てることはできますか?

c = {a,b,...}; 

は内の要素のコピーをCの要素を交換して...

を」初期化子リスト(配列に対して有効ではありません)... "

それから私はVS2016で試してみました:。驚くべきことに

array<int, 2>ai; 
ai = { 1,3 }; 
for (auto c : ai) { 
    cout << c << endl; 
} 

、これは可能性がエラーは発生しませんでした。

私はちょうど知りたいのですが、配列にイニシャライザリストを割り当てることができますか?それとも、それは単にコンパイラのためですか?

+1

リスト初期化を参照してください。http://en.cppreference.com/w/cpp/language/list_initialization – RobClucas

答えて

3

はい、のような割り当て可能になるように定義されます:

クラスarrayは23.2で、コンテナの要件テーブル に適合するように、暗黙的に宣言された特別なメンバ関数 (12.1、12.4、12.8)に依存しています。

arrayのコンストラクタがexplicitではないため、イニシャライザリスト構文を使用できます。それ以外の場合は、次のような言い方をしてください:

ai = array<int,2>{ 1,3 }; 
関連する問題