随笔 - 62  文章 - 70  trackbacks - 0
<2008年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

常用链接

留言簿(3)

随笔分类(66)

随笔档案(62)

文章分类(31)

文章档案(31)

友情链接

最新随笔

积分与排名

  • 积分 - 38418
  • 排名 - 62

最新评论

阅读排行榜

评论排行榜

有时需要创建n*n的二维数组。

于是我就用如下代码:
      int ** a=new int * [n];   //或 int *(* a)=new int * [n];   
      for(int i=0;i<n;i++)a[i]=new int [n];

不知有没有更好的办法?
posted on 2006-04-05 01:10 beyonlin 阅读(369) 评论(5)  编辑 收藏 引用 所属分类: C++之路

FeedBack:
# re: 如何创建二维数组? 2006-04-05 14:35 芋头
@int* a = new int[n * n];
@for (int i=0; i<n; ++i)
@ for (int j=0; j<n; ++j)
@ a[i*n + j] = i*n + j;   回复  更多评论
  
# re: 如何创建二维数组? 2006-04-06 01:02 beyonlin
@芋头

这位大哥,你误解我的意思了。

我是要创建形如a[n][n]的二维数组,

而不是a[n*n]的一维数组。
  回复  更多评论
  
# re: 如何创建二维数组? 2006-04-10 09:04 新新
int (*p)[4]=new int[3][4];
p[0][0]=20;
p[2][3]=30;
  回复  更多评论
  
# re: 如何创建二维数组? 2006-04-10 11:00 小明
基本上没有更好的方法了吧
但是,可以对你的方法改进一下,避免多次new,可能会提高效率,而且很容易对整个数组进行初始化。

int *p =new int[n*n];
int **pp = new int*[n];
for(int i=0;i<n;++i)
{
pp[i] =&p[i*n];
}

//初始化
memset(p,0,sizeof(int)*n*n);  回复  更多评论
  
# re: 如何创建二维数组? 2006-05-02 19:22 snnn
2006-04-10 09:04 by 新新
int (*p)[4]=new int[3][4];
p[0][0]=20;
p[2][3]=30;

补充一句,最后用delete[] p来释放,尽管p是一个指针而不是数组。  回复  更多评论
  

标题  
姓名  
主页
验证码 *
内容(提交失败后,可以通过“恢复上次提交”恢复刚刚提交的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
[使用Ctrl+Enter键可以直接提交]
相关链接:
网站导航: