首頁 >後端開發 >C++ >如何使用 C 11 基於範圍的 for 迴圈反向迭代容器?

如何使用 C 11 基於範圍的 for 迴圈反向迭代容器?

Patricia Arquette
Patricia Arquette原創
2024-12-14 13:34:12356瀏覽

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn