C++中如何定义超长数组
答案:6 悬赏:0 手机版
解决时间 2021-04-02 18:30
- 提问者网友:兔牙战士
- 2021-04-02 15:06
C++中如何定义超长数组
最佳答案
- 五星知识达人网友:怀裏藏嬌
- 2021-04-02 16:05
你是不是把这个数组定义在了函数(比如main)里面?定义在函数里面的数组会存放在系统栈中,而系统栈的空间不很大,容易溢出。
你可以在定义时写:
static int a[100000000];
或者把数组定义放在函数外面作为全局变量。追问这个方法是好。不过还是占内存。。。最麻烦的是数据大了会超时。。
你可以在定义时写:
static int a[100000000];
或者把数组定义放在函数外面作为全局变量。追问这个方法是好。不过还是占内存。。。最麻烦的是数据大了会超时。。
全部回答
- 1楼网友:雾月
- 2021-04-02 21:30
N维数组啊 a[100][1000][1000]
- 2楼网友:等灯
- 2021-04-02 20:20
int *a;
a=new int[100000000];
使用完后delete []a;
a=new int[100000000];
使用完后delete []a;
- 3楼网友:爱难随人意
- 2021-04-02 19:32
其实你说的功能在这个链接里就说到了,是你自己不去看:
在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)由于这些代码都是在编译阶段生成的,它需要知道引用数组的大小。所以这样写的函数显然不能用指针变量作为函数的参数,因此不能用这个函数处理动态分配的内存区域,这样的区域的大小是在运行时确定的。
在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)由于这些代码都是在编译阶段生成的,它需要知道引用数组的大小。所以这样写的函数显然不能用指针变量作为函数的参数,因此不能用这个函数处理动态分配的内存区域,这样的区域的大小是在运行时确定的。
- 4楼网友:冷風如刀
- 2021-04-02 18:13
写入文件,然后按行读取。
给每个数之间添加分隔符。 12,23,34,45,45
给每个数之间添加分隔符。 12,23,34,45,45
- 5楼网友:低血压的长颈鹿
- 2021-04-02 16:52
超大数据。。这么做会报废掉内存的。
可以将数据保存在数据库中或文件中进行处理。
保存在文件的话可以一个对象保存为一行,一行一行读取并处理。
很多程序是在文件中进行处理,当然你可以加密后保存。追问我现在要参加的是noip我想知道这么做会不会出问题,他们是用机器测评程序的,貌似使用Cena追答Cena是测评程序运行时间和内存使用量为主的吧。要是这样的话更不能将这样大批量的数据放在内存里了。
可以将数据保存在数据库中或文件中进行处理。
保存在文件的话可以一个对象保存为一行,一行一行读取并处理。
很多程序是在文件中进行处理,当然你可以加密后保存。追问我现在要参加的是noip我想知道这么做会不会出问题,他们是用机器测评程序的,貌似使用Cena追答Cena是测评程序运行时间和内存使用量为主的吧。要是这样的话更不能将这样大批量的数据放在内存里了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯