2010-09-20

配列初期化の不思議な機能

多次元配列は、以下のように初期化できる

int main()
{
    int a[2][2] = { 1, 2, 3, 4 } ;
    // a[0][0] = 1, a[0][1] = 2, a[1][0] = 3, a[1][1] = 4

    // 出力
    for ( auto & i : a )
        for ( auto j : i )
            std::cout << j << std::endl ;
}

何故こんな機能があるのか分からない。こんな記述は、非常に分かりづらい。

気がついたら、指が自然にrange-based forを書いていた。あんなにrange-based forを嫌っていたのに、これはどうしたことか。

3 comments:

Anonymous said...

なぜひとつめの for では auto & であって auto でないんでしょう?

江添亮 said...

ポインターではなくリファレンスにしたいからです。

Anonymous said...

for ( auto & i : x )
xではなくaでは?