返回信息流比如:
int b,c;
cin >> b >> c;
int a[b][c];
这样不能通过编译。有什么好的办法解决吗?
这是一条镜像帖。来源:北邮人论坛 / cpp / #6509同步于 2008/5/10
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
c++中,要如何实现根据变量声明二维数组int a[b][c]?
kitten
2008/5/10镜像同步47 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
数组不能用变量进行声明
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
此帖在全世界只有一个沙发,即本人现在所在的沙发。
沙发两边的扶手同属于一个沙发。
任何企图妄想制造两个沙发,或是一个沙发一个板凳的行为,都必将遭到包括中国人民在内的全体看帖人民的反对!
int **a = new int*[b];
for (int i=0; i<b; i++)
a[i] = new int[c];
//use a
for (i=0; i<b; i++)
delete [] a[i];
delete [] a;
或者
vector<vector<int> > a(b, vector<int>(c));
【 在 guo 的大作中提到: 】
: int **a = new int*[b];
: for (int i=0; i<b; i++)
: a[i] = new int[c];
: ...................
void main()
{
int b,c;
cin >> b >> c;
int *p=new int[c*b]();
for (int i=0; i <b ; ++i)
{
for (int j=0; j<c; ++j)
cout << p[i];
cout << endl;
}
delete []p;
}
网上有这个例子
这样怎么就分配为行和列了呢?
ms楼上的程序有些问题,是不是贴错了?
【 在 kitten (babababa) 的大作中提到: 】
: void main()
: {
: int b,c;
: ...................
int b,c;
cin>>b>>c;
int **a = new int*[b];
a[0] = new int[b*c];
for(int i=0; i<b; i++)
a[i] = a[0] + i*c;
=================
以前在水木上看到的,顺序访问,很好用
确实比用for循环一个个分配一个个释放好用多了,学习了....
【 在 Bupterm (怀孕 | 纠结 中。。) 的大作中提到: 】
: 释放的时候
: delete[] a[0];
: delete[] a;
: ...................
恩
学习了~
【 在 Bupterm 的大作中提到: 】
: int b,c;
: cin>>b>>c;
: int **a = new int*[b];
: ...................