给出好的解决方案的给高分--关于动态数组

mxcupid 2003-05-03 07:40:23
在程序中要用到多个动态数组(两维)
我用vector申请
vector< vector<double>> a(n),b(n),c(n),d(n);
for(int i=0;i<n;i++)
{
……//赋初值
}
在n较小的情况下,程序可以运行
但是,n稍大一些就会出现运行错误
请问此问题如何解决?
多谢~~~~~~急~~~~~~~~~!!!!!!
...全文
23 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
短歌如风 2003-05-03
  • 打赏
  • 举报
回复
可能和其它的代码有关系。我一直用这种方法存储事先不能确定行列的矩阵,从没出过问题。
mxcupid 2003-05-03
  • 打赏
  • 举报
回复
vector<vector<double> > a(n, vector<double>(n)), b(n, vector<double>(n)),c(n, vector<double>(n)), d(n, vector<double>(n));
我单独做这个的时候,n 非常大也可以,但是一加到我的程序中就不行,怎么办?
yiminggw 2003-05-03
  • 打赏
  • 举报
回复
注关
短歌如风 2003-05-03
  • 打赏
  • 举报
回复
或者不用自己的类,而是在初始化时直接用:
vector<vector<double> > a(n, vector<double>(n)), b(n, vector<double>(n)),c(n, vector<double>(n)), d(n, vector<double>(n));
不过要麻烦一些。
短歌如风 2003-05-03
  • 打赏
  • 举报
回复
Chrisma的说法有误:
vector对象并不大,放在栈里没有问题。而vector对象控制的内存是由allocator在堆中分配的。
你的n有多大?用我的方法应该没有问题的。我试了试2000*2000的数组,是可以的。当然这并不算大。如果你的n太大了(如到了2G),恐怕任何方法都不行了,只能改用稀疏矩阵了。
试验代码如果:
int main()
{
DblAry2D a(2000, 2000);
for (int i = 0; i < 2000; i ++)
for (int j = 0; j < 2000; j ++)
a[i][j] = i * j;
cout << a[1999][1999];
cin.get();
}
mxcupid 2003-05-03
  • 打赏
  • 举报
回复
如何申请?
可不可以明确指示?
Chrisma 2003-05-03
  • 打赏
  • 举报
回复
这是你对变量存放的位置没弄清楚:
全局和static变量存放于数据段,非static局部变量存放于栈,他们的空间都是一定大小的。
只有一个办法,堆上的空间较大,可通过new等分配
mxcupid 2003-05-03
  • 打赏
  • 举报
回复
是这样的,数组的大小是在运行时确定的
需要的是输入一个n,然后要用到多个n*n大小的double型数组
如果用vector申请,则n小时尚可运行,n稍大便不能运行下去
请帮忙,需要什么具体信息尽可以提出
在线等候~~~~~~~
mercury1231 2003-05-03
  • 打赏
  • 举报
回复
关注
xabcxyz 2003-05-03
  • 打赏
  • 举报
回复
关注
短歌如风 2003-05-03
  • 打赏
  • 举报
回复
把你赋初值的语句写出来。
注意:vector<vector<double> > a(n)只是给a设置为有n个元素(每个元素是个vector<double>),而每个元素仍然是空的。
其实你可以不直接用vector,而是写一个类:

class DblAry2D: public vector <vector<double> >
{
public:
typedef vector<double> ElmType;
typedef vector<ElmType> MyBase;
DblAry2D(int n, int m):
MyBase(n, ElmType(m)){};
};

int main()
{
DblAry2D a(10, 20);
}
xt_jat 2003-05-03
  • 打赏
  • 举报
回复
你的n有多大?

上面代码看不出来,
你多帖点代码
熊主任 2003-05-03
  • 打赏
  • 举报
回复
为什么不动态生成一个2维数组了?
或是自己做个简单的封装?

69,379

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧