ホームページ >バックエンド開発 >C++ >C 11 で Boost::adaptors::reverse で逆範囲ベースの For ループを有効にするにはどうすればよいですか?

C 11 で Boost::adaptors::reverse で逆範囲ベースの For ループを有効にするにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-03 03:02:10933ブラウズ

How Can Boost::adaptors::reverse Enable Reverse Range-Based For-Loops in C  11?

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 ループで便利な逆反復を可能にします。

以上がC 11 で Boost::adaptors::reverse で逆範囲ベースの For ループを有効にするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。