码迷,mamicode.com
首页 > 其他好文 > 详细

[CCF 201703-2 学生排队] VS2019使用erase时的问题

时间:2019-12-14 20:48:37      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:ant   max   迭代器   spl   include   color   play   测评   ann   

#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时的问题

标签:ant   max   迭代器   spl   include   color   play   测评   ann   

原文地址:https://www.cnblogs.com/coegle18/p/12040627.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!