Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo illustra come creare altre strutture di dati, ad esempio stack e code, da classi di elenco MFC. Gli esempi usano classi derivate da CList
, ma è possibile usare CList
direttamente, a meno che non sia necessario aggiungere funzionalità.
Stack
Poiché la raccolta di elenchi standard ha sia una testa che una coda, è facile creare una raccolta di elenchi derivata che simula il comportamento di uno stack last-in-first-out. Una pila è come una pila di vassoi in una caffetteria. Man mano che i vassoi vengono aggiunti all'impilamento, vengono posti in cima all'impilamento. L'ultimo vassoio aggiunto è il primo da rimuovere. Le funzioni AddHead
membro della raccolta di elenchi e RemoveHead
possono essere utilizzate per aggiungere e rimuovere elementi in modo specifico dall'inizio dell'elenco, pertanto l'elemento aggiunto più di recente è il primo da rimuovere.
Per creare una raccolta di stack
Derivare una nuova classe lista da una delle classi lista esistenti di MFC e aggiungere ulteriori funzioni membro per supportare la funzionalità delle operazioni di pila.
Nell'esempio seguente viene illustrato come aggiungere funzioni membro per inserire elementi nello stack, visualizzare l'elemento superiore dello stack e rimuovere l'elemento superiore dallo stack.
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(); } };
Si noti che questo approccio espone la classe sottostante CObList
. L'utente può chiamare qualsiasi CObList
funzione membro, indipendentemente dal fatto che abbia senso per uno stack o meno.
N/A
Poiché la collezione di liste standard ha una testa e una coda, è anche facile creare una collezione di liste derivata che simula il comportamento di una coda primo entrato-primo uscito. Una coda è come una linea di persone in una caffetteria. La prima persona in linea è la prima a essere servita. Man mano che arrivano più persone, vanno alla fine della linea per aspettare il loro turno. Le funzioni AddTail
membro della raccolta di elenchi e RemoveHead
possono essere usate per aggiungere e rimuovere elementi in modo specifico dalla testa o dalla parte finale dell'elenco. L'ultimo elemento aggiunto è quindi sempre l'ultimo elemento da rimuovere.
Per creare una raccolta di code
Derivare una nuova classe di elenco da una delle classi di elenco predefinite fornite con la libreria di classi di Microsoft Foundation e aggiungere altre funzioni membro per supportare la semantica delle operazioni di accodamento.
Nell'esempio seguente viene illustrato come aggiungere funzioni membro per aggiungere un elemento alla fine della coda e ottenere l'elemento dalla parte anteriore della coda.
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(); } };