VS2010,error C2466: cannot allocate an array of constant size 0
void __merge(T arr[], int l, int mid, int r){
T aux[r-l+1];
for( int i = l ; i <= r; i ++ )
aux[i-l] = arr[i];
int i = l, j = mid+1;
for( int k = l ; k <= r; k ++ ){
if( i > mid ) { arr[k] = aux[j-l]; j ++;}
else if( j > r ){ arr[k] = aux[i-l]; i ++;}
else if( aux[i-l] < aux[j-l] ){ arr[k] = aux[i-l]; i ++;}
else { arr[k] = aux[j-l]; j ++;}
}
}
f:\c++程序\mergesort\mergesort\demo.cpp(14): error C2466: cannot allocate an array of constant size 0
1>f:\c++程序\mergesort\mergesort\demo.cpp(14): error C2133: 'aux' : unknown size
百度上有说,数组要求在编译时就确定大小,不能用变量来定义数组大小,也不能不指定数组大小。
但是就是需要这样定义变长定义数组大小,T aux[r-l+1],请问有其他办法可以解决这个问题嘛?