vector 使用逆向迭代器后不能使用erase()解决方法
vector 使用逆向迭代器后不能使用erase()
程序需要反向遍历vector,找到相应元素后,将其删除。
可是erase()只能用于正向迭代。。各位大神,有没有好的方法?
------解决方案--------------------
参考:
http://stackoverflow.com/questions/1830158/how-to-call-erase-with-a-reverse-iterator
------解决方案--------------------
正确方法:
参见《effective stl》 第28条
------解决方案--------------------
vector<string> v;
for(int i = v.size()-1; i>=0; --i)
v.erase(v.begin()+i);
------解决方案--------------------
你的用法错了。
for(auto rever=member.rbegin();rever!=member.rend();){
//查找条件
rever = member.erase(rever);
}
------解决方案--------------------
反向迭代器
http://blog.****.net/kjing/article/details/6936325
------解决方案--------------------
your are right!
程序需要反向遍历vector,找到相应元素后,将其删除。
可是erase()只能用于正向迭代。。各位大神,有没有好的方法?
for(vector<STYLE>::reverse_iterator rever=member.rbegin();rever!=member.rend();rever++){
//查找条件
member.erase(rever); //报错
}
------解决方案--------------------
参考:
http://stackoverflow.com/questions/1830158/how-to-call-erase-with-a-reverse-iterator
------解决方案--------------------
正确方法:
v.erase((++ri).base());
参见《effective stl》 第28条
------解决方案--------------------
vector<string> v;
for(int i = v.size()-1; i>=0; --i)
v.erase(v.begin()+i);
------解决方案--------------------
你的用法错了。
for(auto rever=member.rbegin();rever!=member.rend();){
//查找条件
rever = member.erase(rever);
}
------解决方案--------------------
反向迭代器
http://blog.****.net/kjing/article/details/6936325
------解决方案--------------------
your are right!