首页 > 解决方案 > 表达式必须有常数值错误

问题描述

我这里有代码,我在 n1,n2 处得到错误:表达式必须具有常量值,变量“n2”的值不能用作常量。我尝试了#define、delete[]、const,甚至是std::vector,但都没有奏效。还有其他方法可以解决此错误吗?

void merge(list1 arr[], int l, int m, int r)
{
     int n1 = m - l + 1;
     int n2 = r - m;

    // Create temp arrays
    list1 L[n1], R[n2];

    // Copy data to temp arrays L[] and R[]
    for (int i = 0; i < n1; i++)
        L[i] = arr[l + i];

    for (int j = 0; j < n2; j++)
        R[j] = arr[m + 1 + j];

    // Merge the temp arrays back into arr[l..r]
    // Initial index of first subarray
    int i = 0;
    // Initial index of second subarray
    int j = 0;
    // Initial index of merged subarray
    int k = l;
    while (i < n1 && j < n2) {
        if (L[i].team_1 <= R[j].team_1) { //Have to sort data based on team1
            arr[k] = L[i];
            i++;
        }
        else {
            arr[k] = R[j];
            j++;
        }
        k++;
    }
    // Copy the remaining elements of
    // L[], if there are any
    while (i < n1) {
        arr[k] = L[i];
        i++;
        k++;
    }
    // Copy the remaining elements of
    // R[], if there are any
    while (j < n2) {
        arr[k] = R[j];
        j++;
        k++;
    }
}

// l is for left index and r is
// right index of the sub-array
// of arr to be sorted */
void mergeSort(list1 arr[], int l, int r) {
    if (l >= r) {
        return;//returns recursively
    }
    int m = l + (r - l) / 2;
    mergeSort(arr, l, m);
    mergeSort(arr, m + 1, r);
    merge(arr, l, m, r);
}

在此处输入图像描述

标签: c++

解决方案


推荐阅读