为什么该行"subsets.push_back(n);"以下代码中给我一个错误?
Why does the line "subsets.push_back(n);" give me an error in the following code?
我想找到一组数字的功率集,并且有一些问题我无法弄清楚代码。我应该做些什么?
vector<vector <int>> subsets={{}};
for(int i=0; i<a.size();i++){
int elem = a[i];
for(int j=0;j<subsets.size();j++){
vector<int> prev = subsets[j];
vector<int> n = prev;
n.push_back(elem);
subsets.push_back(n);
}
}
我收到以下错误:"抛出'std :: bad_alloc'的实例后终止了终止。
如注释中提到的:
[您的代码包含一个] 无限循环。你在打电话
subsets.push_back
内部循环,因此subsets.size
在 循环的每一次迭代,都不能停止,直到例外是 由于缺乏记忆而被称为。
异常std::bad_alloc
是因为该过程试图分配A 太大内存块(如OS所认为的( - 有些方面 - 但这不是问题,但这里的问题是如已经指出的无限循环。
要避免使用该特定问题,您可以将基于范围的循环使用(并且避免在循环中的push_back
(,例如:
for(vector<int> prev : subsets){
//do stuff...
}
请记住,在每次迭代中对环条件进行了完整评估。
您在循环内扩展subsets
,因此j
始终小于subsets.size()
。
这意味着循环永远不会终止 - 至少直到您用完记忆或遇到其他一些"外部"问题。
而不是在循环之前保存限制:
const int limit = subsets.size();
for(int j = 0; j < limit; j++){
//...
相关文章:
- 将鼠标悬停在问题上时与预期">"相关的代码错误
- VI工作室代码错误无法打开输出文件主.exe
- 引入参数化构造函数后显示 LNK 2019 未解析外部符号的代码错误
- 有关矩阵的代码错误导致分段错误(内核转储)
- C++ Schannel POST 400 错误代码错误请求
- Java 本机访问代码错误:"Invalid memory access"
- 代码错误修改
- C++代码错误分配
- "_FCbuild"不能用作函数 - C/C++ 代码错误
- 我的代码错误类型警告 1 警告 C4018 和更多错误
- 代码错误(从 1 到 100 找到质数)
- OpenCV VisualStudio,C 代码错误尝试访问像素
- 当我使用的教程完全没有错误时,为什么我的代码错误
- 简单的NOOB C 输入/输出问题:代码错误
- 为什么enumProcessModules返回false值和299代码错误
- WinhttpSetoption()失败设置TLSV1.2,带有错误代码错误_internet_incorrect_ha
- 苹果安全传输代码错误
- C++ - 国际象棋主教移动代码错误
- 导入Python库时,嵌入了Python代码错误
- 编译提升C 代码错误