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で確保しようと思ったことがないので気がつかなかったが、何故だろう。
new int[n][5]; で返されるのは int[5]* 型なので、定数じゃないと型が決まらないからじゃないですかね?
ReplyDeleteそういえば、配列、
ReplyDeleteint x[3][5][7]
は、
7個のintの配列の5個の配列の3個の配列でしたね。
右から左か。
Boost::Arrayの方が柔軟性は高いですよね
ReplyDeleteBoost::Arrayの方が柔軟性は高いですよね
ReplyDelete