[CCF 201703-2 学生排队] VS2019使用erase时的问题
Posted coegle18
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[CCF 201703-2 学生排队] VS2019使用erase时的问题相关的知识,希望对你有一定的参考价值。
#include <iostream> #include <vector>
#inclde <algorithm> using namespace std; int main() { int n, t; vector<int> que; cin >> n >> t; for (int i = 0; i < n; i++) { que.push_back(i+1); } for (int i = 0; i < t; i++) { int no, mov; cin >> no >> mov; vector<int>::iterator it; it = find(que.begin(), que.end(), no); it = que.erase(it); que.insert(it + mov, no); } for (int i = 0; i < que.size(); i++) { cout << que[i] << " "; } cout << endl; }
网上找到的代码段都没有对erase
之后的迭代器进行处理,直接que.erase(it)
,这在CCF测评系统和旧版的DevCpp上是可以通过的,但是在VS2019中会在运行完这句代码后报错。
在网上查找后,认为问题是在erase
之后,迭代器会失效,导致之后的insert
失效:cannot seek vector iterator after end。
以上是关于[CCF 201703-2 学生排队] VS2019使用erase时的问题的主要内容,如果未能解决你的问题,请参考以下文章