小编Uri*_*nam的帖子

使用微小单元声明一个巨大的动态数组[C++]

我有这个项目,我正在努力.以下条件适用

  1. 在这个项目中,我需要创建一个巨大的数组(希望我能够创建一个大到~7.13e + 17,但这个目标仍然领先.)
  2. 数组中的每个单元格都可以包含三个值中的一个:0,1,2
  3. 我正在使用C++作为我的语言.

我尝试使用普通的动态数组命令

int * p;
int i;    
i=[size]; //This is calculated somewhere else.
p= new (nothrow) int[i];
Run Code Online (Sandbox Code Playgroud)

但据我所知,这个数组使得一个数组的最大大小可能是int的最大值.如果我更改我的代码并使用以下代码

long long * p;
long long i;    
i=[size]; //This is calculated somewhere else.
p= new (nothrow) long long [i];
Run Code Online (Sandbox Code Playgroud)

然后,阵列中的每个单元格都是"long long"类型,这使得阵列非常重.有没有办法用long long来创建一个数组来确定数组中的单元格数,并且每个单元格的大小为int?

非常感谢,Uriel.

编辑:了解更多信息.

  1. 这个问题主要是理论上的,它是我硕士论文的一部分.我仍然希望这个程序尽可能地发挥作用.
  2. 我目前的步骤是使这个工作用于2.56e + 09项目的数组,快速计算显示我们正在谈论一个至少0.6千兆字节的数组,这是我的系统应该能够应付的.然而,即使所需的空间量确实达到4.5GB,我也无法用我当前的编码解决方案实现这一目标.

c++ memory arrays dynamic-arrays

2
推荐指数
1
解决办法
782
查看次数

标签 统计

arrays ×1

c++ ×1

dynamic-arrays ×1

memory ×1