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中文网其他相关文章!