c++怎样逆向遍历STL容器

以vector<int>为例正向遍历:for(std::vector<int>::itoratoriter=myVec.begin();iter!=myVec.end()... 以vector<int>为例
正向遍历:
for(std::vector<int>::itorator iter = myVec.begin(); iter != myVec.end(); iter++)
{……}
上述代码没问题。

但是我改成逆向遍历:
begin改为rbegin,end改为rend,++改为--
然后编译不通过
itorator打错了,应为iterator
展开
 我来答
超人影视娱乐
高粉答主

推荐于2017-10-04 · 闲来无事的影评人-关注我把
超人影视娱乐
采纳数:7757 获赞数:60595

向TA提问 私信TA
展开全部

rbegin()是一个反向迭代器,其类型应该是reverse_iterator而不是iterator。

代码如下:

#include<iostream>
#include<vector>
using namespace std;
 
 
int main()
{
    vector<int> v;
    v.clear();
    for(int i = 1; i <= 5; i++)
        v.push_back(i);
    vector<int>::iterator it;
    for(it = v.begin(); it != v.end(); it++)
        printf("%d ", *it);
    printf("\n");
    it = v.end();
    for(it--; it >= v.begin(); it--)
        printf("%d ", *it);
    printf("\n");
    vector<int>::reverse_iterator rit;
    for(rit = v.rbegin(); rit != v.rend(); rit++)
        printf("%d ", *rit);
    printf("\n");
    getchar();
    return 0;
}
hactrox
推荐于2017-09-06 · TA获得超过591个赞
知道小有建树答主
回答量:263
采纳率:66%
帮助的人:212万
展开全部

rbegin()是一个反向迭代器,其类型应该是reverse_iterator而不是iterator。

我写了两个反向遍历的方法给楼主,下面是代码:

#include<iostream>
#include<vector>
using namespace std;


int main()
{
    vector<int> v;
    v.clear();
    for(int i = 1; i <= 5; i++)
        v.push_back(i);
    vector<int>::iterator it;
    for(it = v.begin(); it != v.end(); it++)
        printf("%d ", *it);
    printf("\n");
    it = v.end();
    for(it--; it >= v.begin(); it--)
        printf("%d ", *it);
    printf("\n");
    vector<int>::reverse_iterator rit;
    for(rit = v.rbegin(); rit != v.rend(); rit++)
        printf("%d ", *rit);
    printf("\n");
    getchar();
    return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
月下忆娇娘
2014-07-30 · TA获得超过326个赞
知道小有建树答主
回答量:442
采纳率:100%
帮助的人:350万
展开全部
逆向还是++。rbegin通过++最终达到rend
追问

--改++也还报错(问题不在++--那部分)

是编译错误

正向遍历没错,改成rbegin和rend就编译不过

追答
反向迭代器不是iterator, 是reverse_iterator;
几种迭代器:
iterator;
const_iterator;

reverse_iterator;
const_reverse_iterator;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
道术并进
2015-08-27 · TA获得超过1872个赞
知道小有建树答主
回答量:857
采纳率:0%
帮助的人:164万
展开全部
不是有reverse_iterato用吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式