各位大神。这是一段归并排序的函数。在编译的时候除了一个问题
程序代码:
#ifndef _MERGESORT_H_ #define _MERGESORT_H_ #include <iostream> #include <algorithm> #include <string> using namespace std; template<typename T> 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[l + 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; } } } template<typename T> void __mergeSort(T *arr, int l, int r) { if (l >= r) return; int mid = (l + r) / 2; __mergeSort(arr, l, mid); __mergeSort(arr, mid + 1, r); __merge(arr, l, mid, r); } template<typename T> void mergeSort(T *arr, int n) { __mergeSort(arr, 0, n - 1); } #endif //_MERGESORT_H_
在测试文件中已经将各函数值正确的调用,但是编译的时候,在__merge函数中,提示aux[]大小未知,说它的大小不是常量表达式。这是为什么呢?
我用的是VS2013。