为了账号安全,请及时绑定邮箱和手机立即绑定

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],请问有其他办法可以解决这个问题嘛?


正在回答

2 回答

https://img1.sycdn.imooc.com//5cab2e5000012cba19201080.jpg

vs2017是可以编译通过的,我没有2010的环境,你试一试吧!


0 回复 有任何疑惑可以回复我~

vs2017是可以编译通过的,我没有2010的环境,你试一试吧!

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之模板篇
  • 参与学习       91156    人
  • 解答问题       318    个

本C++教程力求即学即会,所有知识以实践方式讲解到操作层面

进入课程

VS2010,error C2466: cannot allocate an array of constant size 0

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信