分割错误:向量中的擦除功能

segmentation fault: erase function in vectors

本文关键字:擦除 功能 向量 错误 分割      更新时间:2023-10-16

我特别在接受se后出现段错误。

我已经尝试了很多来找到错误,但就是无法! 请帮忙!

基本上,我正在尝试删除位置pos处的元素,然后显示向量,然后我正在删除位置范围内的所有元素(s, e)s包含且e排他。

#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include <ostream>
using namespace std;

int main() {
/* Enter your code here. Read input from STDIN. Print output to STDOUT */  
int n;
vector <int> v;
cin >> n;
int ele;
for(int i = 0; i < n; ++i)
{
cin >> ele;
v.push_back(ele);
} 
int pos;
int s, e;
cin >> pos;
v.erase(v.begin()+pos-1);
for(int c: v)
{
cout << c << " ";
}
cout << endl;
cin >> s;
cin >> e;
v.erase(v.begin() + s - 1, v.end() + e - 1);
for(int c: v)
{
cout << c << " ";
}
cout << endl;
return 0;
}

我认为这一行:

v.erase(v.begin() + s - 1, v.end() + e - 1);

应该是:

v.erase(v.begin() + s - 1, v.begin() + e - 1);

你不应该增加 end(( 迭代器。