首頁 >後端開發 >C++ >C 11 基於範圍的 For 迴圈可以反向迭代嗎?

C 11 基於範圍的 For 迴圈可以反向迭代嗎?

DDD
DDD原創
2024-12-12 22:02:17549瀏覽

Can C  11 Range-Based For Loops Iterate in Reverse?

使用C 11 進行基於範圍的反向迭代

問題:

有辦法嗎反轉基於範圍的for 迴圈的迭代器方向?目前,使用 rbegin() 和 rend() 轉換具有明確迭代器的標準 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';
}

以上是C 11 基於範圍的 For 迴圈可以反向迭代嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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