运行时报错说iterator+offset out range,咋整?

#include<iostream>
#include<fstream>
#include<string>
#include<vector>
using namespace std;

int main() {
unsigned int i, j;
string filename = "Test.txt";
fstream fin;
fin.open(filename.c_str(), ios::in);

vector<string> v;
string tmp;

while (fin >> tmp)
{
v.push_back(tmp);
}

for (i = 0; i < v.size(); i++) 
{
for (j = 0; j < v.size(); j++) 
{
int m = j - 1;
if (v[i] == v[j]) v.erase(j-1,j);
}
}
for (auto x : v)
cout << x << endl;

getchar();
getchar();
return 0;
}

炎炎设计
浏览 150回答 1
1回答

慕工程0101907

v.erase(j-1,j);有两个错误越界用法错误正确的用法为vector<string>::iterator t = v.begin();//相当于取数组第一个元素v.erase(t);//删除
打开App,查看更多内容
随时随地看视频慕课网APP