我想找到一组数字的幂集,但有一些问题我无法用代码解决。我应该做哪些改变??
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' 实例后终止调用""
最佳答案
如 comment 中所述:
[You code contains an] infinite loop. You are calling
subsets.push_back
inside loop, sosubsets.size
is increased at every iteration of loop and it cannot be stopped, until exception is called due to lack of memory.
Exception std::bad_alloc
被抛出是因为进程正在尝试分配一个太大内存块(如操作系统所认为的那样)——有办法解决这个问题但是这不是这里的问题,问题是已经指出的无限循环。
为避免该特定问题,您可以改用基于范围的 for 循环(并避免循环内的 push_back
),例如:
for(vector<int> prev : subsets){
//do stuff...
}
关于c++ - 为什么 "subsets.push_back(n);"行在以下代码中给我一个错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56130209/