为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C++
炎炎设计 2023-04-23 22:18:32
#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;}
查看完整描述

1 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

v.erase(j-1,j);

有两个错误

  1. 越界

  2. 用法错误

正确的用法为

vector<string>::iterator t = v.begin();//相当于取数组第一个元素

v.erase(t);//删除


查看完整回答
反对 回复 2023-04-25
  • 1 回答
  • 0 关注
  • 149 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信