C++ 数组大小超过CPP中的最大对象大小

C++ 数组大小超过CPP中的最大对象大小,c++,c++14,C++,C++14,最近,我在解决背包的变化问题时遇到了这个错误。谁能提出一些摆脱它的办法吗 const int n=105, w= 1000000005; int val[n], ans[n][w]; int weight[n]; 错误:数组“ans”的大小“4000000020”超过了最大对象大小“2147483647”。您在那里做的是创建相当于TB的内存分配。通常在堆中执行这些类型的分配(使用诸如std::vector val(n);和std::vector ans(n,std::vector(w));)。

最近,我在解决背包的变化问题时遇到了这个错误。谁能提出一些摆脱它的办法吗

const int n=105, w= 1000000005;
int val[n], ans[n][w];
int weight[n];

错误:数组“ans”的大小“4000000020”超过了最大对象大小“2147483647”。

您在那里做的是创建相当于TB的内存分配。通常在堆中执行这些类型的分配(使用诸如
std::vector val(n);
std::vector ans(n,std::vector(w));
)。但是,你确定你需要那么多的内存吗?在你谈论了高达105000000525个整数之后。

你在那里做的是创造出价值万亿字节的内存分配。通常在堆中执行这些类型的分配(使用诸如
std::vector val(n);
std::vector ans(n,std::vector(w));
)。但是,你确定你需要那么多的内存吗?毕竟你说的是105000000525个整数

谁能提出一些摆脱它的办法吗

const int n=105, w= 1000000005;
int val[n], ans[n][w];
int weight[n];
  • 选项1:使数组变小,使其不超过限制
  • 选项2:针对具有更高限制的系统
  • 选项3:动态分配阵列。一个简单的方法是使用
    std::vector
谁能提出一些摆脱它的办法吗

const int n=105, w= 1000000005;
int val[n], ans[n][w];
int weight[n];
  • 选项1:使数组变小,使其不超过限制
  • 选项2:针对具有更高限制的系统
  • 选项3:动态分配阵列。一个简单的方法是使用
    std::vector

是,使用
std::vector
。数组通常存储在堆栈上,其空间比堆小得多,堆是
std::vector
存储其数据的地方。同样的问题持续存在,请将
vector
代码添加到问题中,并解释它有同样的问题。“同样的问题持续存在”不,它没有。在尝试上花费2分钟以上。了解如何初始化向量。提示:这与
[]
无关。而且这几乎肯定是解决任务的错误方法。想想你使用了多少存储空间!是,使用
std::vector
。数组通常存储在堆栈上,其空间比堆小得多,堆是
std::vector
存储其数据的地方。同样的问题持续存在,请将
vector
代码添加到问题中,并解释它有同样的问题。“同样的问题持续存在”不,它没有。在尝试上花费2分钟以上。了解如何初始化向量。提示:这与
[]
无关。而且这几乎肯定是解决任务的错误方法。想想你使用了多少存储空间!好啊但约束是这样给出的。我还有其他选择吗?@Shrayakjain我们忘掉最大值,继续添加元素怎么样?因为有时候约束是一种过度的行为。但约束是这样给出的。我还有其他选择吗?@Shrayakjain我们忘掉最大值,继续添加元素怎么样?因为有时候约束是一种过度的手段。