关于new
我要在函数中申请一个二维数组空间,但空间的大小是通过参数来获得的,如:void ab(int i,int j){int *p = (int *)new int[i][j];}但是会出错,提示为应当给定数组常量大小的空间。我知道一维数组是对的 即,void ab(int i){int *p = new int[i];}.该怎么解决啊?谢谢了!
[解决办法]
C++中没有直接分配二维数组的这样的语法。
如果要这解决这个问题,一般可以有三种方法。
1. 用vector
2. 先分配一个指针数组,然后让其中的每个指针指向一个分配出来的一维数组
3. 用一维来模拟二维,int *p = new [i*j],然后后面要访问数据元素时都要做一下下标转换,把二维的下标映射到一维中去。这种做法的好处是在内存布局上与真正的二维数组是一样的。这对于类如图像处理之类的程序来说是很重要的。