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中文網其他相關文章!