「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > 一時コンテナを使用して範囲パイプラインを作成するにはどうすればよいですか?

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

2024 年 11 月 8 日に公開
ブラウズ:240

How Can We Create Range Pipelines with Temporary Containers?

一時コンテナを使用した範囲パイプラインの実装

一時コンテナ内の値を処理する範囲パイプラインを作成するには、views::cache1 演算子を組み込むことが不可欠です。この演算子は変換の結果をキャッシュし、後続の操作で確実に利用できるようにします。

サードパーティ関数 f が型 T のパラメーターを受け取り、T のベクトルを返す次のシナリオを考えてみましょう。 f を無限範囲 src のすべての要素に適用し、結果を 1 つの範囲に平坦化する範囲パイプラインでは、次のアプローチを利用できます。ビュー::変換(f) |ビュー::キャッシュ1 | views::join;

auto rng = src | views::transform(f) | views::cache1 | views::join;

views::transform(f):
    f 関数を適用します。 src の各要素。ベクトル コンテナーの範囲が生成されます。
  1. views::cache1:
  2. 前の変換の出力をキャッシュし、その後の処理に利用できるようにします。
  3. ]views::join:
  4. ベクター コンテナの範囲を 1 つの範囲に平坦化し、すべての要素を効果的に結合します。
  5. views::cache1 を組み込むことで、一時的なベクターがf によって作成されたコンテナは、views::join で単一の範囲に連結することができます。これは、一時コンテナで正しく動作する範囲パイプラインを作成するために不可欠です。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3