随笔 - 62  文章 - 96  trackbacks - 0
<2006年4月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

常用链接

留言簿(7)

随笔分类(66)

随笔档案(62)

文章分类(31)

文章档案(32)

友情链接

最新随笔

积分与排名

  • 积分 - 208477
  • 排名 - 104

最新评论

阅读排行榜

评论排行榜

有时需要创建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 阅读(1303) 评论(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是一个指针而不是数组。  回复  更多评论
  

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理