首页 >后端开发 >C++ >C 11 基于范围的 For 循环可以反向迭代吗?

C 11 基于范围的 For 循环可以反向迭代吗?

DDD
DDD原创
2024-12-12 22:02:17551浏览

Can C  11 Range-Based For Loops Iterate in Reverse?

使用 C 11 进行基于范围的反向迭代

问题:

有办法吗反转基于范围的 for 循环的迭代器方向?目前,使用 rbegin() 和 rend() 转换具有显式迭代器的标准 for 循环是可能的,但对于基于范围的版本使用类似的语法将是有利的。

答案:

Boost 不是创建自定义适配器,而是通过 boost::adaptors::reverse 提供了便捷的解决方案。此适配器在迭代时反转元素的顺序。

使用示例:

#include <list>
#include <iostream>
#include <boost/range/adaptor/reversed.hpp>

int main()
{
    std::list<int> x { 2, 3, 5, 7, 11, 13, 17, 19 };
    for (auto i : boost::adaptors::reverse(x))
        std::cout << i << '\n';
    for (auto i : x)
        std::cout << i << '\n';
}

以上是C 11 基于范围的 For 循环可以反向迭代吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn