2013-06-28 25 views
11

C++で異なるコンテナを使用することで、同じ出力を実現できます。例えば ​​。 。コンテナにはどのようなタイプがありますか?

std::array<int, 5> v = {1,2,3,4,5}; 
    for(auto i : v) 
     std::cout << i << ", "; 

または

std::vector<int> v = {1,2,3,4,5}; 

または

int v[] = {1,2,3,4,5}; 

など。 。

だから何の容器はautoここで使用しますか?

auto v = {1,2,3,4,5}; 
    for(auto i : v) 
     std::cout << i << ", "; 

答えて

18

std::initializer_list<int>


ない自分のためにチェックするのは難しい、あなたは常にdecltype(v)し、その後でそれを比較できることをリストタイプは述べています。

for (auto i : {1,2,3,4,5}) 
    std::cout << i << ", "; 

initializer_listは、標準的な範囲のインターフェイスを保つので、それを行うことができます。時には非常に有用であり、あなたが興味かもしれないと、別の素敵な性質を持っている

+1

<< TYPE_DESC(v);自動v = {1,2,3,4,5}; '/' lvalue initializer_list '修正してください。 +1 –

+2

2つの小さな注釈:厳密に言えば、 'initializer_list'は標準の意味でのコンテナではありません。あなたの例は、標準で明示的にその形式のfor文を原点としているために動作します。一見、 'initializer_list'型の実体はありません。このようなオブジェクトは暗黙的に導入されているので、 ''をインクルードしなければなりませんが、 "見る"ことはできません。 – MWid

関連する問題