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],請問有其他辦法可以解決這個問題嘛?
2019-04-08
vs2017是可以編譯通過的,我沒有2010的環境,你試一試吧!
2019-04-08
vs2017是可以編譯通過的,我沒有2010的環境,你試一試吧!