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

2024-12-14 23:45:10
推荐回答(4个)
回答1:

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

代码如下:

#include
#include
using namespace std;
 
 
int main()
{
    vector v;
    v.clear();
    for(int i = 1; i <= 5; i++)
        v.push_back(i);
    vector::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::reverse_iterator rit;
    for(rit = v.rbegin(); rit != v.rend(); rit++)
        printf("%d ", *rit);
    printf("\n");
    getchar();
    return 0;
}

回答2:

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

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

#include
#include
using namespace std;


int main()
{
    vector v;
    v.clear();
    for(int i = 1; i <= 5; i++)
        v.push_back(i);
    vector::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::reverse_iterator rit;
    for(rit = v.rbegin(); rit != v.rend(); rit++)
        printf("%d ", *rit);
    printf("\n");
    getchar();
    return 0;
}

回答3:

逆向还是++。rbegin通过++最终达到rend

回答4:

不是有reverse_iterato用吗?