ホームページ > バックエンド開発 > C++ > C# で自動デキューを備えた固定サイズのキューを実装するにはどうすればよいですか?

C# で自動デキューを備えた固定サイズのキューを実装するにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-13 08:50:47
オリジナル
833 人が閲覧しました

How to Implement a Fixed-Size Queue with Automatic Dequeuing in C#?

古い項目を自動削除する C# での固定サイズのキューの作成

この記事では、オブジェクトの限定された履歴を保持し、最大サイズに達したときに最も古いエントリを自動的に破棄するデータ構造の作成について説明します。 System.Collections 名前空間を使用してこのキューを構築します。

解決策:

このソリューションでは、FixedSizedQueue<T> の周囲にラッパー クラス ConcurrentQueue<T> を使用します。 このラッパーの Enqueue メソッドはキューのサイズをチェックします。キューがいっぱいの場合 (Limit プロパティで定義)、新しい項目に対応するために、最も古い項目が Dequeue 経由で削除されます。

FixedSizedQueue<T> クラスの C# コードは次のとおりです。

<code class="language-csharp">public class FixedSizedQueue<T>
{
    private readonly ConcurrentQueue<T> queue = new ConcurrentQueue<T>();
    private readonly object lockObject = new object();

    public int Limit { get; set; }

    public void Enqueue(T obj)
    {
        queue.Enqueue(obj);
        lock (lockObject)
        {
            T overflow;
            while (queue.Count > Limit && queue.TryDequeue(out overflow)) ;
        }
    }
}</code>
ログイン後にコピー

FixedSizedQueue<T> を使用すると、履歴が固定サイズになり、容量制限に達すると古いアイテムが自動的に削除されます。

以上がC# で自動デキューを備えた固定サイズのキューを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート