ホームページ  >  記事  >  バックエンド開発  >  一時コンテナーで範囲パイプラインを使用するにはどうすればよいですか?

一時コンテナーで範囲パイプラインを使用するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-02 15:58:03159ブラウズ

How Can I Use Range Pipelines with Temporary Containers?

一時コンテナを使用した Range パイプラインの作成

range-v3 で、ベクトルを作成するには、その関数を範囲のすべての要素にマップし、結果として得られるすべてのベクトルをすべての要素を含む単一の範囲に平坦化するパイプラインを作成することが不可欠です。

最初は、次のようなパイプラインを作成しようとするかもしれません。 as:

<code class="cpp">auto rng = src | view::transform(f) | view::join;</code>

ただし、f によって生成されるような一時コンテナのビューを作成することが不可能であるため、このアプローチは以前は実現できませんでした。

この問題に対処するために、パッチが作成されました。が導入され、そのような範囲パイプラインを正しく記述できるようになりました。重要なのは、次の例に示すように、パイプラインに views::cache1 演算子を追加することです:

<code class="cpp">auto rng = views::iota(0, 4)
        | views::transform([](int i) { return std::string(i, char('a' + i)); })
        | views::cache1
        | views::join('-');</code>

これにより、パイプラインが一時コンテナを正しく処理できるようになり、

質問で説明されている問題の解決策は、パイプラインを次のように変更することです:

<code class="cpp">auto rng = src | views::transform(f) | views::cache1 | views::join;</code>

以上が一時コンテナーで範囲パイプラインを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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