首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于new解决办法

2012-04-19 
关于new我要在函数中申请一个二维数组空间,但空间的大小是通过参数来获得的,如:voidab(inti,intj){int*p(

关于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],然后后面要访问数据元素时都要做一下下标转换,把二维的下标映射到一维中去。这种做法的好处是在内存布局上与真正的二维数组是一样的。这对于类如图像处理之类的程序来说是很重要的。

热点排行