关于 erase()
题目 :将一个string中的大写字母删除。#include<iostream>
#include<string>
using namespace std;
int main()
{
string str;
cout<<"enter a string "<<endl;
getline(cin,str);
for(string::iterator iter=str.begin();iter!=str.end();iter++)
{
if(isupper(*iter))
{
iter=str.erase(iter);//删除迭代器值向的元素,并返回指向删除元素的后一元素。
iter--;
}
}
cout<<str;
return 0;
}
若将注释处得代码改为str.erase(iter);运行结果还是一样。
为什么呢? str.erase(iter) 删除操作不是使迭代器是失效了吗?为什么删除操作过后 。还可以使用。