다음을 통해 공유


스택 및 대기열 컬렉션 만들기

같은 다른 데이터 구조를 만드는 방법을 설명 스택 및 대기열, MFC에서 클래스를 나열 합니다.예제에서 파생 된 클래스를 사용 CList를 사용할 수 있습니다 CList 직접 기능을 추가 하 고 필요 하지 않은.

스택

표준 목록 컬렉션에는 머리와 꼬리가 모두 있으므로 마지막에-선입 선출 스택의 동작을 모방 하는 파생 된 목록 컬렉션을 만들기 쉽습니다.스택 스택 용지함에는 카페테리아와 비슷합니다.트레이 스택에 추가 되 면 스택 맨 이동 하십시오.마지막 추가 용지함 제거할 첫 번째입니다.목록 컬렉션 멤버 함수 AddHeadRemoveHead 추가 목록; 특히 머리에서 요소를 제거 하는 데 사용 따라서 최근에 추가한 요소를 제거 하려면 첫 번째입니다.

스택 컬렉션을 만들려면

  • 기존의 MFC 목록 클래스 중 하나에서 새 목록 클래스를 파생 하 고 스택 연산의 기능을 지원 하기 위한 다른 멤버 함수를 추가 합니다.

    다음 예제에서는 요소 스택에, 스택의 맨 위 요소를 엿 본 밀고 스택에서 맨 위에 있는 요소를 팝 하는 멤버 함수를 추가 하는 방법을 보여 줍니다.

    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 멤버 함수는 스택 적합 한지에 관계.

표준 목록 컬렉션에는 머리와 꼬리가 모두 있으므로 쉽게 선입 선출 큐의 동작을 모방 하는 파생 된 목록 컬렉션을 만들 수 있습니다.큐 일행은 카페테리아 줄와 비슷합니다.첫 번째 줄에 제공 되는 첫 번째입니다.더 많은 사람들이 자신의 차례를 기다려 줄의 끝으로 이동 하십시오.목록 컬렉션 멤버 함수 AddTailRemoveHead 추가 하 고 특히 머리 또는 꼬리 목록의 요소를 제거 하는 데 사용할 수 있습니다 따라서 가장 최근에 요소는 항상 마지막으로 제거할 수 있는 추가 합니다.

대기열 컬렉션을 만들려면

  • Mfc 라이브러리를 제공 하는 미리 정의 된 목록 클래스 중 하나에서 새 목록 클래스를 파생 하 고 큐 작업의 의미 체계를 지원 하기 위한 다른 멤버 함수를 추가 합니다.

    다음 예제에서는 어떻게 큐의 끝에 요소를 추가 하 고 큐의 앞에서 요소를 가져오고 멤버 함수를 추가할 수 있습니다 보여 줍니다.

    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(); }
    }; 
    

참고 항목

개념

컬렉션