C 11 使用 Boost 反向基于范围的 For 循环
可以使用专用容器适配器来实现以相反顺序迭代容器,该适配器反转迭代器的方向。这使我们能够利用基于范围的 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'; }
此代码首先创建一个列表 x整数。然后它使用 boost::adaptors::reverse(x) 适配器以相反的顺序迭代列表。它以相反的顺序打印元素,然后按原始顺序进行比较。
程序的输出是:
19 17 13 11 7 5 3 2 2 3 5 7 11 13 17 19
这演示了 Boost boost::adaptors 的能力: :reverse 适配器,用于反转迭代器的方向,并允许使用 C 中基于范围的 for 循环进行方便的反向迭代。
以上是Boost::adaptors::reverse 如何在 C 11 中启用基于范围的反向 For 循环?的详细内容。更多信息请关注PHP中文网其他相关文章!