我在 C++ 程序中遇到 bad_alloc 错误
I am getting bad_alloc error in c++ program
我写了一个 C++ 程序,但出现错误。
我不明白我收到错误的原因。
请帮我解决这个问题。
这是我的代码:
#include <bits/stdc++.h>
#define endl "\n"
#define int long long
using namespace std;
void solve() {
int n, x;
cin >> n >> x;
cout << n << x;
vector <int> in(n);
for (auto &p : in)
cin >> p;
vector<int> vect;
vect = in;
int cnt = 0;
int l = n;
for (int i = 0; i < l; i++) {
if (vect[i] % 2 == 0) {
while (x--) {
vect.push_back(vect[i] / 2);
l++;
}
}
else {
cnt = i;
break;
}
}
int sum = 0;
for (int i = 0; i < cnt; i++) {
sum += vect[i];
}
cout << sum << endl;
}
signed main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int t;
cin >> t;
while (t--) {
solve();
}
}
输入是:
2 1 2 12 4 2 4 6 8 2
这是我在 sublime text 中编译时遇到的错误:
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
[Finished in 4.0s]
问题出在变量x
的处理上。不要问我解决方案是什么,但我可以描述问题。
while (x--) {
vect.push_back(vect[i] / 2);
l++;
}
第一次循环 运行s x
等于二。所以两个项目被添加到向量并且 x
取值 -1
.
下一次循环 运行s x
从 -1
开始,循环 运行s 直到你 运行 内存不足并得到bad_alloc
异常。
我写了一个 C++ 程序,但出现错误。 我不明白我收到错误的原因。 请帮我解决这个问题。
这是我的代码:
#include <bits/stdc++.h>
#define endl "\n"
#define int long long
using namespace std;
void solve() {
int n, x;
cin >> n >> x;
cout << n << x;
vector <int> in(n);
for (auto &p : in)
cin >> p;
vector<int> vect;
vect = in;
int cnt = 0;
int l = n;
for (int i = 0; i < l; i++) {
if (vect[i] % 2 == 0) {
while (x--) {
vect.push_back(vect[i] / 2);
l++;
}
}
else {
cnt = i;
break;
}
}
int sum = 0;
for (int i = 0; i < cnt; i++) {
sum += vect[i];
}
cout << sum << endl;
}
signed main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int t;
cin >> t;
while (t--) {
solve();
}
}
输入是:
2 1 2 12 4 2 4 6 8 2
这是我在 sublime text 中编译时遇到的错误:
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
[Finished in 4.0s]
问题出在变量x
的处理上。不要问我解决方案是什么,但我可以描述问题。
while (x--) {
vect.push_back(vect[i] / 2);
l++;
}
第一次循环 运行s x
等于二。所以两个项目被添加到向量并且 x
取值 -1
.
下一次循环 运行s x
从 -1
开始,循环 运行s 直到你 运行 内存不足并得到bad_alloc
异常。