在使用set反向迭代器的时候的出现的问题,C++初学

for(set::reverse_iterator iter1=s.rbegin();iter1!=s.rend();++iter1)
for(set::reverse_iterator iter2=s.rbegin();iter2!=s.rend();++iter2)
{
int nn=*iter1,m=*iter2;
if(s.find(*iter1+*iter2)==s.end())
{
if(*iter1+*iter2==n)
return true;
s.insert(*iter1+*iter2);
if(search(n,s,dep+1,maxd))
return true;
else s.erase(nn+m);
}

        为什么如果用s.erase(*iter1+*iter2)会出现问题“map/set iterator is not decrementable” 

erase直接用迭代器。取值是为什么

http://blog.163.com/pei_hua100/blog/static/80569759201472292827387/

但是我删除的是iter1和iter2指向的元素的和啊,不会删除iter1,iter2啊,而且iter1 iter2指向的元素不可能是0

比如*iter1=2;*iter2=3;我要删除的是值为5的节点