首页 >后端开发 >C++ >如何使用 C 11 基于范围的 For 循环轻松地反向迭代容器?

如何使用 C 11 基于范围的 For 循环轻松地反向迭代容器?

DDD
DDD原创
2024-12-02 15:58:10975浏览

How Can I Easily Reverse Iterate Through a Container Using C  11 Range-Based For-Loops?

C 11 反向基于范围的 For 循环

使用基于范围的 for 循环以相反的顺序迭代容器需要反转迭代器的方向。虽然显式迭代器提供了一个简单的解决方案,但是是否有一个方便的容器适配器可以提供此功能?

反向迭代器适配器

幸运的是,Boost 库包含一个解决方案:boost ::适配器::反向。此适配器反转容器的迭代顺序,使基于范围的 for 循环能够反向迭代。

示例用法

考虑一个整数容器:

std::list<int> x { 2, 3, 5, 7, 11, 13, 17, 19 };

要使用基于范围的 for 循环反向迭代此容器,请使用反向适配器:

for (auto i : boost::adaptors::reverse(x))
    std::cout << i << '\n';

这将以相反的顺序打印列表的元素。

与原始迭代的比较

为了比较,这里是没有反向适配器的原始迭代顺序:

for (auto i : x)
    std::cout << i << '\n';

这将打印列表中的元素

结论

Boost 的反向适配器提供了一种使用基于范围的 for 循环以相反顺序迭代容器的便捷方法。这简化了代码,并允许更简洁、更高效的反向迭代。

以上是如何使用 C 11 基于范围的 For 循环轻松地反向迭代容器?的详细内容。更多信息请关注PHP中文网其他相关文章!

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