Joh*_*Arg -1 c++ vector segmentation-fault
我已经完成了HackerRank上的问题,到目前为止,我已经能够轻松地完成所有故障排除,但是对于这一点,我遇到了细分错误。
我在网上查询了一下,发现这意味着我正在访问未分配给任务的内存。
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
/* Enter your code here. Read input from STDIN. Print output to STDOUT */
int N, x, a, b;
vector<int> v;
cin >> N;
for(int i = 0; i < N; i++) {
int a;
cin >> a;
v.push_back(a);
}
cin >> x;
v.erase(v.begin() + x-1);
v.erase(v.begin() + a-1, v.begin() + b-2);
cout << v.size() << "\n";
for(int i = 0; i < v.size(); i++) {
cout << v[i] << " ";
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
为什么会出现此错误?我看到的唯一可能的问题是,我应该在某个地方使用指针或引用,但是我仍然不清楚它们是如何工作的。
这里有一个明显的问题
v.erase(v.begin() + a-1, v.begin() + b-2);
Run Code Online (Sandbox Code Playgroud)
您在程序中始终没有给出b任何值。
两者均未a初始化,因为尽管您a的for循环中有一个变量,但它与main顶层声明的变量不同。因此,a和和b都尚未初始化,这可能是您崩溃的原因。
| 归档时间: |
|
| 查看次数: |
89 次 |
| 最近记录: |