永发信息网

C++中如何定义超长数组

答案:6  悬赏:0  手机版
解决时间 2021-04-02 18:30
C++中如何定义超长数组
最佳答案
你是不是把这个数组定义在了函数(比如main)里面?定义在函数里面的数组会存放在系统栈中,而系统栈的空间不很大,容易溢出。
你可以在定义时写:
static int a[100000000];
或者把数组定义放在函数外面作为全局变量。追问这个方法是好。不过还是占内存。。。最麻烦的是数据大了会超时。。
全部回答
N维数组啊 a[100][1000][1000]
int *a;
a=new int[100000000];
使用完后delete []a;
其实你说的功能在这个链接里就说到了,是你自己不去看:
在C++ 中,对数组的引用可以直接传递数组名,因为数组的大小的信息已在形参里提供了。但是这样一来我们只能固定数组的大小来用这个函数了。用模板加数组的引用可以解决这个问题,看如下代码:
template
void test(char (&arr)[sz])
{
for ( int i = 0; i < sz; i++ )
......}char a[2] = { 0 }, b[15] = { 0 };test(a); //oktest(b); //ok......
这样解决了数组长度可变的问题,但也引入了新的问题:
(1)当有多个不同的test调用时,会产生多份test代码。而传统的函数调用只有一份代,也调用的次数无关。
(2)由于这些代码都是在编译阶段生成的,它需要知道引用数组的大小。所以这样写的函数显然不能用指针变量作为函数的参数,因此不能用这个函数处理动态分配的内存区域,这样的区域的大小是在运行时确定的。
写入文件,然后按行读取。
给每个数之间添加分隔符。 12,23,34,45,45
超大数据。。这么做会报废掉内存的。
可以将数据保存在数据库中或文件中进行处理。
保存在文件的话可以一个对象保存为一行,一行一行读取并处理。
很多程序是在文件中进行处理,当然你可以加密后保存。追问我现在要参加的是noip我想知道这么做会不会出问题,他们是用机器测评程序的,貌似使用Cena追答Cena是测评程序运行时间和内存使用量为主的吧。要是这样的话更不能将这样大批量的数据放在内存里了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
红合硬装梅花王烟价格
有没有什么东西或方法把钢筋截断?
let是什么意思
残局红一车一卒对五兵
php 读取 json 里面的字段内容
听说吃了金唯儿生的孩子聪明真的吗
苹果手机ID的作用是哪些?
微信个人订阅号手机如何申请
最后一个是巧的成语
换了大轮胎之后,油耗会升高吗?
包粽子馅怎么做
墩身和立柱有什么区别
《专属天使》完整歌词
C# Label中的Visible怎么用?
vfp题目。使用sql语句向表中插入一条记录。我
推荐资讯
女友总是不主动给我发信息怎么办?每次都是我
和事业单位的上级领导来往要注意哪些行为举止
白菜优惠券靠谱吗
苹果7需要升级到ios 11.3.1吗?
中蜂的平面隔王板,意蜂能用吗?
滑县道口有火车票代售点吗?
单选题I like the pink blou
跪求pdf转wps的app的百度云盘链接
rpg为什么打开工程却提示读取元件数据失败?
有关塑料件加工原材料的损耗率
套风机定额,风机项特征中8704CMH表示什么,
电脑里有2个系统 如何删除?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?