2010-06-30

newと配列

newは、配列を確保できる。このとき、配列の要素数は、定数でなくても構わない。

void f( int n )
{
    new int[n] ;
}

newは、配列の配列を確保できる。このとき、配列の最初の要素数は、定数でなくても構わない。最初以外の要素数は、定数でなければならない。

void f( int n )
{
    new int[n][5] ; // OK
    new int[n][5][5] ; // OK

    new int[5][n] ; // ill-formed
    new int[n][n] ; // ill-formed
}

今まで、配列の配列をnewで確保しようと思ったことがないので気がつかなかったが、何故だろう。

4 comments:

  1. new int[n][5]; で返されるのは int[5]* 型なので、定数じゃないと型が決まらないからじゃないですかね?

    ReplyDelete
  2. そういえば、配列、
    int x[3][5][7]
    は、

    7個のintの配列の5個の配列の3個の配列でしたね。
    右から左か。

    ReplyDelete
  3. Boost::Arrayの方が柔軟性は高いですよね

    ReplyDelete
  4. Boost::Arrayの方が柔軟性は高いですよね

    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.