スタック コレクションとキュー コレクションの作成

この技術情報は別のデータ構造体を、 MFC のリスト クラスから スタック と キューなど、作成する方法について説明します。例では CListから派生したクラスを使用して機能を追加する必要がない場合 CList を直接使用できます。

スタック

標準リスト コレクションにヘッダーと tail の両方があるため、後入れ先出し (LIFO スタックの動作を模した派生リスト コレクションを作成する方が簡単です。スタックはカフェテリアのトレーのスタックのようになります。トレーがスタックに追加すると、スタックの上位を移動します。追加された最後のトレーが削除される 1 番目のです。リスト コレクションのメンバー関数 AddHeadRemoveHead がリストのヘッダーから要素を追加および削除するために使用できます。; したがって、最近追加された要素には、 1 削除されます。

スタック コレクションを作成するには

  • 新しいリスト クラスを既存の MFC クラス リストの 1 種類から派生し、スタック操作の機能をサポートするためのメンバー関数を追加します。

    次の例は、メンバー関数をプッシュの要素にスタックに追加し、スタックの最上位の要素またはピーク、スタックの最上位の要素をポップする方法を示しています:

    class CTray : public CObject { };
    
    class CStack : public CTypedPtrList< CObList, CTray* >
    {
    public:
        // Add element to top of stack
        void Push( CTray* newTray )
            { AddHead( newTray ); }
    
        // Peek at top element of stack
        CTray* Peek()
            { return IsEmpty() ? NULL : GetHead(); }
    
        // Pop top element off stack
        CTray* Pop()
            { return RemoveHead(); }
    };
    

この方法が CObList の基本クラスが公開されることに注意してください。ユーザーは、の意味をスタック適切かどうか CObList のメンバー関数をダイヤルできます。

キュー

標準リスト コレクションにヘッダーと tail の両方があるため、後入れ先出しキューの動作を模した派生リスト コレクションを作成するのも簡単です。キューはカフェテリアの個々の行などのようです。行の最初の個人は、実行される 1 番目のです。より多くのユーザーが到着すると同時に、回転を待機することを、行の末尾に移動します。リスト コレクションのメンバー関数 AddTailRemoveHead がリストのヘッダーと後続の要素を追加および削除するために使用できます。; したがって、最近追加された要素が削除されている場合は、最後常にです。

キューのコレクションを作成するには

  • 新しいリスト クラスを Microsoft Foundation Class ライブラリに用意されている定義済みリスト クラスの 1 つがから派生し、キュー操作のセマンティクスをサポートするためのメンバー関数を追加します。

    要素をキューの末尾に追加し、キューの頭から要素を取得するためにメンバー関数を追加する方法を次の例に示します。

    class CQueue : public CTypedPtrList< CObList, CPerson* >
    { 
    public:
        // Go to the end of the line
        void AddToEnd( CPerson* newPerson )
            { AddTail( newPerson ); }        // End of the queue
    
        // Get first element in line
        CPerson* GetFromFront()
            { return IsEmpty() ? NULL : RemoveHead(); }
    }; 
    

参照

概念

コレクション クラス