C++ 数组 - 必须有常量值错误

问题描述 投票:0回答:1

我正在学习合并排序算法,当我复制确切的代码时,我收到一个错误“表达式必须具有常量值”,即使它对讲师来说运行没有问题。我同时使用 Visual Studio Code 和 Microsoft Visual Studio。对于 VS Code,它会确认错误,但会运行,但不会在 Microsoft VS 中运行。我尝试在数组声明之前使用 const int ,但它仍然给出错误。我知道我可以使用动态分配和释放,但为什么它对他有效,但对我无效。

void merge(int array[], int leftIndex, int midIndex, int rightIndex) {
    int leftArraySize = midIndex - leftIndex + 1;
    int rightArraySize = rightIndex - midIndex;

    int leftArray[leftArraySize]; // error 1 underlines leftArraySize
    int rightArray[rightArraySize]; // error 2 underlines rightArraySize

    // rest of the code... 
}
c++
1个回答
0
投票

变长数组不是 C++ 的标准部分。当您在编译时不知道数组的大小时,请使用动态分配的内存,最好通过

std::vector
而不是原始的 new/delete。

例如

void merge(int array[], int leftIndex, int midIndex, int rightIndex) {
    int leftArraySize = midIndex - leftIndex + 1;
    int rightArraySize = rightIndex - midIndex;

    std::vector<int> leftArray(leftArraySize); 
    std::vector<int> rightArray(rightArraySize); 

    // rest of the code... 
}
© www.soinside.com 2019 - 2024. All rights reserved.