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:

melpon said...

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

江添亮 said...

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

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

萌ゑ said...

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

萌ゑ said...

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