代码改变世界

c++ rbegin() 和rend()

2012-04-15 14:15  youxin  阅读(1929)  评论(0)    收藏  举报

看下面的一段代码:

 for(vector<string>::iterator it=vec.rbegin();it!=vec.rend();it--)
     {
         cout<<*it<<ends;
     }

编译有错,为什么?

 rbegin() rend()的返回类型不是vector<string>::iterator ,而是reverse_iterator;

 reverse_iterator rbegin();
const_reverse_iterator rbegin() const;
Return reverse iterator to reverse beginning
所以上面的代码应该为:
 for(vector<string>::reverse_iterator it=vec.rbegin();it!=vec.rend();it++)
     {
         cout<<*it<<ends;
     }

 注意是it++, 我第一次写的时候以为是--,结果运行时报错it could not be incremental.