社区
C语言
帖子详情
给出好的解决方案的给高分--关于动态数组
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
打赏
收藏
给出好的解决方案的给高分--关于动态数组
在程序中要用到多个动态数组(两维) 我用vector申请 vector< vector> a(n),b(n),c(n),d(n); for(int i=0;i<n;i++) { ……//赋初值 } 在n较小的情况下,程序可以运行 但是,n稍大一些就会出现运行错误 请问此问题如何解决? 多谢~~~~~~急~~~~~~~~~!!!!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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维数组了?
或是自己做个简单的封装?
区块链毕业设计 基于区块链的智能合约的超市临期食品管理系统源码+详细文档+全部资料(
高分
项目).zip
本项目提供了一种基于区块链的智能合约
解决方案
,用于帮助超市更有效地管理临期食品。通过追踪食品的生产、过期日期以及价格信息,我们可以降低浪费,从而为超市提供一种环保且经济的
解决方案
。 ## 功能 - 创建...
【绝对干货】java用循环输入给数组赋值
对于每一件服务器操作都提出了多种的
解决方案
。对于每一种的方法,虽然不一定都是非常实用的方法,读者能通过这些方法,熟悉 MySQL 的特点和强大的功能。 第一章简单介绍了 MySQL 的历史、特点,同时对 SQL 的语法...
《ACM竞赛-C/C++入门》 C语言-13
尹成老师带你步入C语言基础的殿堂,讲课生动风趣、深入浅出,全套视频内容充实,整个教程以C语言为核心,完整精彩的演练了C语言操作流程以及各种精彩的小项目等,提高竞赛能力,非常适合同学们学习! 清华大学尹成...
第十八章:一文掌握数组标记
数组标记 一.桶标记 1.认识数组 数组是一种将数据有序存放的结构,通过一维数组的学习,相信同学们会感觉数组的使用是非常灵活的,原因无异于是因为数组里一个下标对应一个元素。例如 int a[5]={2,3,5,7,11},下标...
处理粘包和半包有关问题的socket分包Java实现
------
解决方案
-------------------- 一般在socket处理大数据量传输的时候会产生粘包和半包问题,有的时候tcp为了提高效率会缓冲N个包后再一起发出去,这个与缓存和网络有关系 在java中对于这样的优化,lz可以用...
C语言
69,379
社区成员
243,073
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章