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:

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

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

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

    ReplyDelete

You can use some HTML elements, such as <b>, <i>, <a>, also, some characters need to be entity referenced such as <, > and & Your comment may need to be confirmed by blog author. Your comment will be published under GFDL 1.3 or later license with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.