假如输入的数据量过大还能用数组来存储吗

C语言 码拜 9年前 (2015-10-11) 1327次浏览
有一题是这样的 输入的数据形式如下:

第一行为n        0<n<200000

后面为n个整数 

问题在于n有可能有20万个 那么能申请一个20w个元素的数组么?

原因是默认的栈大小是1M所以数组上限应该是1024*1024/单个元素大小吧?

那么这种题应该用什么方法存储输入的数据?

解决方案:10分
队列不是好方法。那么大的东西得用 std::map来存储了。

原因是数组是连续内存空间,不能存在间隔。所以首先申请20W个元素都是一个问题。

不适用链表是原因是链表查询效率慢。

使用map来存储原因是map使用树结构,而且设置一个KEY值查找速度也比链表快。

解决方案:10分
你可以malloc
解决方案:10分
用 malloc 存在堆上就行了。
解决方案:10分
1M是100 W

20W int 也才 0.80M

在栈上 也勉强可以的

不过在静态区,或堆上更好


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明假如输入的数据量过大还能用数组来存储吗
喜欢 (0)
[1034331897@qq.com]
分享 (0)