【发布时间】:2016-04-30 04:10:36
【问题描述】:
在下面的代码中,如果我尝试删除除最后一个之外的任何元素,则代码可以正常工作。但是,如果我尝试删除最后一个元素,则会引发运行时错误。不知道为什么?
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
vector<string> s;
s.push_back("Jacob");
s.push_back("Jamal");
s.push_back("Joseph");
s.push_back("Janardan");
vector<string>::iterator it;
for(it = s.begin(); it != s.end() ; it++)
cout<<*it<<endl;
for(it = s.begin(); it != s.end() ; it++)
if(*it == "Janardan")
s.erase(it);
for(it = s.begin(); it != s.end() ; it++)
cout<<*it<<endl;
return 0;
}
【问题讨论】:
标签: c++11 vector stl runtime erase