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

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

Patricia Arquette
发布: 2024-12-14 13:34:12
原创
352 人浏览过

How Can I Reverse Iterate Through a Container Using C  11's Range-Based for-Loops?

C 11 中基于范围的 for 循环的反向迭代

在 C 中,基于范围的 for 循环提供了一种便捷的方法迭代容器的元素。但是,没有内置的容器适配器可以反转迭代器的方向,这使得以相反的顺序迭代容器具有挑战性。

概念:容器适配器

在探索解决方案之前,了解容器适配器的概念很重要。这些对象包装容器并提供其元素的修改视图。适配器可以过滤、转换或以其他方式操作底层容器返回的元素。

解决方案:Boost 的反向适配器

反转迭代器的方向并启用反向迭代在基于范围的 for 循环中,我们可以利用 Boost C 库中的 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 };

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

    // Iterate in forward order
    for (auto i : x)
        std::cout << i << '\n';
}
登录后复制

在此示例中,反向适配器用于以相反顺序迭代列表 x。输出将是:

19
17
13
11
7
5
3
2
登录后复制

注意: boost::adaptors::reverse 适配器是 Boost C 库的一部分,Boost C 库是一个开源库的集合,可以下载并集成到现有的 C 项目中。

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板