CObList-Klasse

Unterstützt sortierte Listen von nicht CObject geordneten Zeigern, auf die sequenziell oder nach Zeigerwert zugegriffen werden kann.

Syntax

class CObList : public CObject

Member

Öffentliche Konstruktoren

Name Beschreibung
CObList::CObList Erstellt eine leere Liste für CObject Zeiger.

Öffentliche Methoden

Name Beschreibung
CObList::AddHead Fügt dem Kopf der Liste ein Element (oder alle Elemente in einer anderen Liste) hinzu (macht einen neuen Kopf).
CObList::AddTail Fügt dem Listenende ein Element (oder alle Elemente in einer anderen Liste) hinzu (macht einen neuen Tail).
CObList::Find Ruft die Position eines Elements ab, das durch Zeigerwert angegeben wird.
CObList::FindIndex Ruft die Position eines Elements ab, das durch einen nullbasierten Index angegeben wird.
CObList::GetAt Ruft das Element an einer bestimmten Position ab.
CObList::GetCount Gibt die Anzahl der Elemente in dieser Liste zurück.
CObList::GetHead Gibt das Kopfelement der Liste zurück (darf nicht leer sein).
CObList::GetHeadPosition Gibt die Position des Kopfelements der Liste zurück.
CObList::GetNext Ruft das nächste Element zum Durchlaufen ab.
CObList::GetPrev Ruft das vorherige Element zum Durchlaufen ab.
CObList::GetSize Gibt die Anzahl der Elemente in dieser Liste zurück.
CObList::GetTail Gibt das Tail-Element der Liste zurück (kann nicht leer sein).
CObList::GetTailPosition Gibt die Position des Tail-Elements der Liste zurück.
CObList::InsertAfter Fügt ein neues Element nach einer bestimmten Position ein.
CObList::InsertBefore Fügt ein neues Element vor einer bestimmten Position ein.
CObList::IsEmpty Tests für die leere Listenbedingung (keine Elemente).
CObList::RemoveAll Entfernt alle Elemente aus dieser Liste.
CObList::RemoveAt Entfernt ein Element aus dieser Liste, angegeben nach Position.
CObList::RemoveHead Entfernt das Element aus dem Kopf der Liste.
CObList::RemoveTail Entfernt das Element aus dem Tail der Liste.
CObList::SetAt Legt das Element an einer bestimmten Position fest.

Hinweise

CObList Listen verhalten sich wie doubly verknüpfte Listen.

Eine Variable vom Typ POSITION ist ein Schlüssel für die Liste. Sie können eine POSITION Variable sowohl als Iterator verwenden, um eine Liste sequenziell als auch als Textmarke zu durchlaufen, um einen Ort zu speichern. Eine Position ist jedoch nicht mit einem Index identisch.

Die Elementeinfügung ist sehr schnell am Listenkopf, am Schwanz und an einem bekannten POSITION. Eine sequenzielle Suche ist erforderlich, um ein Element nach Wert oder Index nachzuschlagen. Diese Suche kann langsam sein, wenn die Liste lang ist.

CObList enthält das Makro zur Unterstützung der IMPLEMENT_SERIAL Serialisierung und des Dumpings seiner Elemente. Wenn eine Liste von CObject Zeigern in einem Archiv gespeichert wird, entweder mit einem überladenen Einfügeoperator oder mit der Serialize Memberfunktion, wird jedes CObject Element wiederum serialisiert.

Wenn Sie ein Abbild einzelner CObject Elemente in der Liste benötigen, müssen Sie die Tiefe des Dumpkontexts auf 1 oder höher festlegen.

Wenn ein CObList Objekt gelöscht wird oder dessen Elemente entfernt werden, werden nur die CObject Zeiger entfernt, nicht die Objekte, auf die verwiesen wird.

Sie können Ihre eigenen Kurse ableiten von CObList. Die neue Listenklasse, die zum Speichern von Zeigern auf Objekte entwickelt wurde, die von CObjectobjekten abgeleitet wurden, fügt neue Datenmember und neue Memberfunktionen hinzu. Beachten Sie, dass die resultierende Liste nicht streng typsicher ist, da sie das Einfügen eines Zeigers CObject zulässt.

Hinweis

Sie müssen das IMPLEMENT_SERIAL Makro in der Implementierung Der abgeleiteten Klasse verwenden, wenn Sie die Liste serialisieren möchten.

Weitere Informationen zur Verwendung CObListfinden Sie im Artikel Sammlungen.

Vererbungshierarchie

CObject

CObList

Anforderungen

Header: afxcoll.h

CObList::AddHead

Fügt dem Kopf dieser Liste ein neues Element oder eine Liste von Elementen hinzu.

POSITION AddHead(CObject* newElement);
void AddHead(CObList* pNewList);

Parameter

newElement
Der CObject Zeiger, der dieser Liste hinzugefügt werden soll.

pNewList
Ein Zeiger auf eine andere CObList Liste. Die Elemente in pNewList dieser Liste werden hinzugefügt.

Rückgabewert

Die erste Version gibt den POSITION Wert des neu eingefügten Elements zurück.

In der folgenden Tabelle sind andere Memberfunktionen aufgeführt, die ähnlich sind CObList::AddHead.

Klasse Memberfunktion
CPtrList POSITION AddHead( void * newElement );

void AddHead( CPtrList * pNewList );
CStringList POSITION AddHead(const CString& newElement );

POSITION AddHead(LPCTSTR newElement );

void AddHead(CStringList * pNewList );

Hinweise

Die Liste kann vor dem Vorgang leer sein.

Beispiel

Eine Auflistung der Klasse finden Sie unter.See CObList::CObList for a listing of the CAge class.

CObList list;
list.AddHead(new CAge(21)); // 21 is now at head.
list.AddHead(new CAge(40)); // 40 replaces 21 at head.
#ifdef _DEBUG
afxDump.SetDepth(1);
afxDump << _T("AddHead example: ") << &list << _T("\n");
#endif      

Die Ergebnisse dieses Programms sind wie folgt:

AddHead example: A CObList with 2 elements
a CAge at $44A8 40
a CAge at $442A 21

CObList::AddTail

Fügt dem Listenende ein neues Element oder eine Liste von Elementen hinzu.

POSITION AddTail(CObject* newElement);
void AddTail(CObList* pNewList);

Parameter

newElement
Der CObject Zeiger, der dieser Liste hinzugefügt werden soll.

pNewList
Ein Zeiger auf eine andere CObList Liste. Die Elemente in pNewList dieser Liste werden hinzugefügt.

Rückgabewert

Die erste Version gibt den POSITION Wert des neu eingefügten Elements zurück.

Hinweise

Die Liste kann vor dem Vorgang leer sein.

In der folgenden Tabelle sind andere Memberfunktionen aufgeführt, die ähnlich sind CObList::AddTail.

Klasse Memberfunktion
CPtrList POSITION AddTail( void * newElement );

void AddTail( CPtrList * pNewList );
CStringList POSITION AddTail( const CString& newElement );

POSITION AddTail( LPCTSTR newElement );

void AddTail( CStringList * pNewList );

Beispiel

Eine Auflistung der Klasse finden Sie unter.See CObList::CObList for a listing of the CAge class.

CObList list;
list.AddTail(new CAge(21));
list.AddTail(new CAge(40)); // List now contains (21, 40).
#ifdef _DEBUG
afxDump.SetDepth(1);
afxDump << _T("AddTail example: ") << &list << _T("\n");
#endif      

Die Ergebnisse dieses Programms sind wie folgt:

AddTail example: A CObList with 2 elements
a CAge at $444A 21
a CAge at $4526 40

CObList::CObList

Erstellt eine leere CObject Zeigerliste.

CObList(INT_PTR nBlockSize = 10);

Parameter

nBlockSize
Die Granularität der Speicherzuweisung für die Erweiterung der Liste.

Hinweise

Wenn die Liste wächst, wird Speicher in Einheiten von nBlockSize Einträgen zugeordnet. Wenn eine Speicherzuweisung fehlschlägt, wird ein CMemoryException Fehler ausgelöst.

In der folgenden Tabelle sind andere Memberfunktionen aufgeführt, die ähnlich sind CObList::CObList.

Klasse Memberfunktion
CPtrList CPtrList( INT_PTR nBlockSize = 10 );
CStringList CStringList( INT_PTR nBlockSize = 10 );

Beispiel

Nachfolgend finden Sie eine Auflistung der von -abgeleiteten KlasseCAge, die CObjectin allen Auflistungsbeispielen verwendet wird:

// Simple CObject-derived class for CObList and other examples
class CAge : public CObject
{
   DECLARE_SERIAL(CAge)
private:
   int   m_years;
public:
   CAge() { m_years = 0; }
   CAge(int age) { m_years = age; }
   CAge(const CAge& a) { m_years = a.m_years; } // Copy constructor
   void Serialize(CArchive& ar);
   void AssertValid() const;
   const CAge& operator=(const CAge& a)
   {
      m_years = a.m_years; return *this;
   }
   BOOL operator==(CAge a)
   {
      return m_years == a.m_years;
   }
#ifdef _DEBUG
   void Dump(CDumpContext& dc) const
   {
      CObject::Dump(dc);
      dc << m_years;
   }
#endif
};

Nachfolgend finden Sie ein Beispiel für die CObList Konstruktorverwendung:

CObList list(20);  // List on the stack with blocksize = 20.

CObList* plist = new CObList; // List on the heap with default 
                              // blocksize.         

CObList::Find

Sucht die Liste sequenziell, um den ersten CObject Zeiger zu finden, der dem angegebenen Zeiger CObject entspricht.

POSITION Find(
    CObject* searchValue,
    POSITION startAfter = NULL) const;

Parameter

searchValue
Der In dieser Liste zu findende Objektzeiger.

startAfter
Die Startposition für die Suche.

Rückgabewert

Ein POSITION Wert, der für iterations- oder Objektzeigerabrufe verwendet werden kann; NULL wenn das Objekt nicht gefunden wird.

Hinweise

Beachten Sie, dass die Zeigerwerte verglichen werden, nicht der Inhalt der Objekte.

In der folgenden Tabelle sind andere Memberfunktionen aufgeführt, die ähnlich sind CObList::Find.

Klasse Memberfunktion
CPtrList POSITION Find( void *searchValue , POSITION startAfter = NULL ) const;
CStringList POSITION Find( LPCTSTR searchValue , POSITION startAfter = NULL ) const;

Beispiel

Eine Auflistung der Klasse finden Sie unter.See CObList::CObList for a listing of the CAge class.

CObList list;
CAge* pa1;
CAge* pa2;
POSITION pos;
list.AddHead(pa1 = new CAge(21));
list.AddHead(pa2 = new CAge(40));    // List now contains (40, 21).
if ((pos = list.Find(pa1)) != NULL) // Hunt for pa1
{                                  // starting at head by default.
   ASSERT(*(CAge*)list.GetAt(pos) == CAge(21));
}

CObList::FindIndex

Verwendet den Wert als nIndex Index in der Liste.

POSITION FindIndex(INT_PTR nIndex) const;

Parameter

nIndex
Der nullbasierte Index des zu findenden Listenelements.

Rückgabewert

Ein POSITION Wert, der für iterations- oder Objektzeigerabrufe verwendet werden kann; NULL wenn nIndex dies zu groß ist. (Das Framework generiert eine Assertion, wenn nIndex sie negativ ist.)

Hinweise

Es beginnt eine sequenzielle Überprüfung vom Kopf der Liste, die auf dem nth-Elementbeendet wird.

In der folgenden Tabelle sind andere Memberfunktionen aufgeführt, die ähnlich sind CObList::FindIndex.

Klasse Memberfunktion
CPtrList POSITION FindIndex( INT_PTR nIndex ) const;
CStringList POSITION FindIndex( INT_PTR nIndex ) const;

Beispiel

Eine Auflistung der Klasse finden Sie unter.See CObList::CObList for a listing of the CAge class.

CObList list;
POSITION pos;

list.AddHead(new CAge(21));
list.AddHead(new CAge(40)); // List now contains (40, 21).
if ((pos = list.FindIndex(0)) != NULL)
{
   ASSERT(*(CAge*)list.GetAt(pos) == CAge(40));
}

CObList::GetAt

Eine Variable vom Typ POSITION ist ein Schlüssel für die Liste.

CObject*& GetAt(POSITION position);
const CObject*& GetAt(POSITION position) const;

Parameter

position
Ein POSITION Wert, der von einem vorherigen GetHeadPosition Oder Find Memberfunktionsaufruf zurückgegeben wird.

Rückgabewert

Weitere Informationen finden Sie in der Beschreibung des Rückgabewerts für GetHead.

Hinweise

Sie ist nicht identisch mit einem Index, und Sie können nicht selbst auf einen POSITION Wert anwenden. GetAt ruft den Zeiger ab, der CObject einer bestimmten Position zugeordnet ist.

Sie müssen sicherstellen, dass Ihr POSITION Wert eine gültige Position in der Liste darstellt. Wenn sie ungültig ist, wird die Debugversion der Microsoft Foundation-Klassenbibliothek bestätigt.

In der folgenden Tabelle sind andere Memberfunktionen aufgeführt, die ähnlich sind CObList::GetAt.

Klasse Memberfunktion
CPtrList const void*& GetAt( POSITION position ) const;

void*& GetAt( POSITION position );
CStringList const CString& GetAt( POSITION position ) const;

CString& GetAt( POSITION position );

Beispiel

Ein Beispiel hierfür finden Sie unter FindIndex.

CObList::GetCount

Ruft die Anzahl der Elemente in dieser Liste ab.

INT_PTR GetCount() const;

Rückgabewert

Ein ganzzahliger Wert, der die Elementanzahl enthält.

In der folgenden Tabelle sind andere Memberfunktionen aufgeführt, die ähnlich sind CObList::GetCount.

Klasse Memberfunktion
CPtrList INT_PTR GetCount( ) const;
CStringList INT_PTR GetCount( ) const;

Beispiel

Eine Auflistung der Klasse finden Sie unter.See CObList::CObList for a listing of the CAge class.

CObList list;

list.AddHead(new CAge(21));
list.AddHead(new CAge(40)); // List now contains (40, 21).
ASSERT(list.GetCount() == 2);

CObList::GetHead

Ruft den CObject Zeiger ab, der das Kopfelement dieser Liste darstellt.

CObject*& GetHead();
const CObject*& GetHead() const;

Rückgabewert

Wenn auf die Liste über einen Zeiger auf ein const CObListZeiger zugegriffen wird, wird GetHead ein CObject Zeiger zurückgegeben. Auf diese Weise kann die Funktion nur auf der rechten Seite einer Zuordnungsanweisung verwendet werden und so die Liste vor Änderungen schützen.

Wenn auf die Liste direkt oder über einen Zeiger auf einen CObListZeiger zugegriffen wird, wird GetHead ein Verweis auf einen CObject Zeiger zurückgegeben. Dadurch kann die Funktion auf beiden Seiten einer Zuordnungsanweisung verwendet werden und somit die Listeneinträge geändert werden.

Hinweise

Sie müssen sicherstellen, dass die Liste vor dem Aufrufen GetHeadnicht leer ist. Wenn die Liste leer ist, wird die Debugversion der Microsoft Foundation-Klassenbibliothek bestätigt. Wird verwendet IsEmpty , um zu überprüfen, ob die Liste Elemente enthält.

In der folgenden Tabelle sind andere Memberfunktionen aufgeführt, die ähnlich sind CObList::GetHead.

Klasse Memberfunktion
CPtrList const void*& GetHead( ) const; void*& GetHead( );
CStringList const CString& GetHead( ) const; CString& GetHead( );

Beispiel

Eine Auflistung der Klasse finden Sie unter.See CObList::CObList for a listing of the CAge class.

Im folgenden Beispiel wird die Verwendung GetHead auf der linken Seite einer Zuordnungsanweisung veranschaulicht.

const CObList* cplist;

CObList* plist = new CObList;
CAge* page1 = new CAge(21);
CAge* page2 = new CAge(30);
CAge* page3 = new CAge(40);
plist->AddHead(page1);
plist->AddHead(page2);  // List now contains (30, 21).
// The following statement REPLACES the head element.
plist->GetHead() = page3; // List now contains (40, 21).
ASSERT(*(CAge*)plist->GetHead() == CAge(40));
cplist = plist;  // cplist is a pointer to a const list.
// cplist->GetHead() = page3; // Error: can't assign a pointer to a const list
ASSERT(*(CAge*)plist->GetHead() == CAge(40)); // OK

delete page1;
delete page2;
delete page3;
delete plist; // Cleans up memory.      

CObList::GetHeadPosition

Ruft die Position des Kopfelements dieser Liste ab.

POSITION GetHeadPosition() const;

Rückgabewert

Ein POSITION Wert, der für iterations- oder Objektzeigerabrufe verwendet werden kann; NULL wenn die Liste leer ist.

In der folgenden Tabelle sind andere Memberfunktionen aufgeführt, die ähnlich sind CObList::GetHeadPosition.

Klasse Memberfunktion
CPtrList POSITION GetHeadPosition( ) const;
CStringList POSITION GetHeadPosition( ) const;

Beispiel

Eine Auflistung der Klasse finden Sie unter.See CObList::CObList for a listing of the CAge class.

CObList list;
POSITION pos;

list.AddHead(new CAge(21));
list.AddHead(new CAge(40)); // List now contains (40, 21).
if ((pos = list.GetHeadPosition()) != NULL)
{
   ASSERT(*(CAge*)list.GetAt(pos) == CAge(40));
}

CObList::GetNext

Ruft das listenelement, durch rPositiondas identifiziert wird, und legt rPosition dann den POSITION Wert des nächsten Eintrags in der Liste fest.

CObject*& GetNext(POSITION& rPosition);
const CObject* GetNext(POSITION& rPosition) const;

Parameter

rPosition
Ein Verweis auf einen POSITION Wert, der von einem vorherigen GetNext, GetHeadPositionoder einem anderen Memberfunktionsaufruf zurückgegeben wird.

Rückgabewert

Weitere Informationen finden Sie in der Beschreibung des Rückgabewerts für GetHead.

Hinweise

Sie können in einer Vorwärts iterationsschleife verwendenGetNext, wenn Sie die Anfangsposition mit einem Aufruf oder Findeinem Aufruf GetHeadPosition einrichten.

Sie müssen sicherstellen, dass Ihr POSITION Wert eine gültige Position in der Liste darstellt. Wenn sie ungültig ist, wird die Debugversion der Microsoft Foundation-Klassenbibliothek bestätigt.

Wenn das abgerufene Element der letzte in der Liste ist, wird der neue Wert rPosition auf .NULL

Es ist möglich, ein Element während einer Iteration zu entfernen. Ein Beispiel hierfür finden Sie unter RemoveAt.

Hinweis

Ab MFC 8.0 hat sich die const-Version dieser Methode geändert, anstatt const CObject*&zurückzugebenconst CObject*. Diese Änderung wurde vorgenommen, um den Compiler in Übereinstimmung mit dem C++-Standard zu bringen.

In der folgenden Tabelle sind andere Memberfunktionen aufgeführt, die ähnlich sind CObList::GetNext.

Klasse Memberfunktion
CPtrList void*& GetNext( POSITION& rPosition );

const void* GetNext( POSITION& rPosition ) const;
CStringList CString& GetNext( POSITION& rPosition );

const CString& GetNext( POSITION& rPosition ) const;

Beispiel

Eine Auflistung der Klasse finden Sie unter.See CObList::CObList for a listing of the CAge class.

CObList list;
POSITION pos;
list.AddHead(new CAge(21));
list.AddHead(new CAge(40)); // List now contains (40, 21).
// Iterate through the list in head-to-tail order.
#ifdef _DEBUG
for (pos = list.GetHeadPosition(); pos != NULL;)
{
   afxDump << list.GetNext(pos) << _T("\n");
}
#endif      

Die Ergebnisse dieses Programms sind wie folgt:

a CAge at $479C 40
a CAge at $46C0 21

CObList::GetPrev

Ruft das listenelement ab, durch rPositiondas identifiziert wird, und legt rPosition es dann auf den POSITION Wert des vorherigen Eintrags in der Liste fest.

CObject*& GetPrev(POSITION& rPosition);
const CObject* GetPrev(POSITION& rPosition) const;

Parameter

rPosition
Ein Verweis auf einen POSITION Wert, der von einem vorherigen GetPrev oder anderen Memberfunktionsaufruf zurückgegeben wird.

Rückgabewert

Weitere Informationen finden Sie in der Beschreibung des Rückgabewerts für GetHead.

Hinweise

Sie können in einer Umgekehrten Iterationsschleife verwendenGetPrev, wenn Sie die Anfangsposition mit einem Aufruf oder Findeinem Aufruf GetTailPosition einrichten.

Sie müssen sicherstellen, dass Ihr POSITION Wert eine gültige Position in der Liste darstellt. Wenn sie ungültig ist, wird die Debugversion der Microsoft Foundation-Klassenbibliothek bestätigt.

Wenn das abgerufene Element der erste in der Liste ist, wird der neue Wert auf rPosition .NULL

Hinweis

Ab MFC 8.0 hat sich die const-Version dieser Methode geändert, anstatt const CObject*&zurückzugebenconst CObject*. Diese Änderung wurde vorgenommen, um den Compiler in Übereinstimmung mit dem C++-Standard zu bringen.

In der folgenden Tabelle sind andere Memberfunktionen aufgeführt, die ähnlich sind CObList::GetPrev.

Klasse Memberfunktion
CPtrList void*& GetPrev( POSITION& rPosition );

const void* GetPrev( POSITION& rPosition ) const;
CStringList CString& GetPrev( POSITION& rPosition );

const CString& GetPrev( POSITION& rPosition ) const;

Beispiel

Eine Auflistung der Klasse finden Sie unter.See CObList::CObList for a listing of the CAge class.

CObList list;
POSITION pos;

list.AddHead(new CAge(21));
list.AddHead(new CAge(40)); // List now contains (40, 21).
// Iterate through the list in tail-to-head order.
for (pos = list.GetTailPosition(); pos != NULL;)
{
#ifdef _DEBUG
   afxDump << list.GetPrev(pos) << _T("\n");
#endif
}

Die Ergebnisse dieses Programms sind wie folgt:

a CAge at $421C 21
a CAge at $421C 40

CObList::GetSize

Gibt die Anzahl der Listenelemente zurück.

INT_PTR GetSize() const;

Rückgabewert

Die Anzahl der Elemente in der Liste.

Hinweise

Rufen Sie diese Methode auf, um die Anzahl der Elemente in der Liste abzurufen.

In der folgenden Tabelle sind andere Memberfunktionen aufgeführt, die ähnlich sind CObList::GetSize.

Klasse Memberfunktion
CPtrList INT_PTR GetSize( ) const;
CStringList INT_PTR GetSize( ) const;

Beispiel

Eine Auflistung der Klasse finden Sie unter.See CObList::CObList for a listing of the CAge class.

CObList list;

list.AddHead(new CAge(21));
list.AddHead(new CAge(40)); // List now contains (40, 21).
ASSERT(list.GetSize() == 2);

CObList::GetTail

Ruft den CObject Zeiger ab, der das Tail-Element dieser Liste darstellt.

CObject*& GetTail();
const CObject*& GetTail() const;

Rückgabewert

Weitere Informationen finden Sie in der Beschreibung des Rückgabewerts für GetHead.

Hinweise

Sie müssen sicherstellen, dass die Liste vor dem Aufrufen GetTailnicht leer ist. Wenn die Liste leer ist, wird die Debugversion der Microsoft Foundation-Klassenbibliothek bestätigt. Wird verwendet IsEmpty , um zu überprüfen, ob die Liste Elemente enthält.

In der folgenden Tabelle sind andere Memberfunktionen aufgeführt, die ähnlich sind CObList::GetTail.

Klasse Memberfunktion
CPtrList const void*& GetTail( ) const; void*& GetTail( );
CStringList const CString& GetTail( ) const; CString& GetTail( );

Beispiel

Eine Auflistung der Klasse finden Sie unter.See CObList::CObList for a listing of the CAge class.

CObList list;

list.AddHead(new CAge(21));
list.AddHead(new CAge(40)); // List now contains (40, 21).
ASSERT(*(CAge*)list.GetTail() == CAge(21));

CObList::GetTailPosition

Ruft die Position des Tail-Elements dieser Liste ab; NULL wenn die Liste leer ist.

POSITION GetTailPosition() const;

Rückgabewert

Ein POSITION Wert, der für iterations- oder Objektzeigerabrufe verwendet werden kann; NULL wenn die Liste leer ist.

In der folgenden Tabelle sind andere Memberfunktionen aufgeführt, die ähnlich sind CObList::GetTailPosition.

Klasse Memberfunktion
CPtrList POSITION GetTailPosition( ) const;
CStringList POSITION GetTailPosition( ) const;

Beispiel

Eine Auflistung der Klasse finden Sie unter.See CObList::CObList for a listing of the CAge class.

CObList list;
POSITION pos;

list.AddHead(new CAge(21));
list.AddHead(new CAge(40)); // List now contains (40, 21).
if ((pos = list.GetTailPosition()) != NULL)
{
    ASSERT(*(CAge*) list.GetAt(pos) == CAge(21));
}     

CObList::InsertAfter

Fügt dieser Liste ein Element nach dem Element an der angegebenen Position hinzu.

POSITION InsertAfter(
    POSITION position,
    CObject* newElement);

Parameter

position
Ein POSITION Wert, der von einem vorherigen GetNext, GetPrevoder Find Memberfunktionsaufruf zurückgegeben wird.

newElement
Der Objektzeiger, der dieser Liste hinzugefügt werden soll.

In der folgenden Tabelle sind andere Memberfunktionen aufgeführt, die ähnlich sind CObList::InsertAfter.

Klasse Memberfunktion
CPtrList POSITION InsertAfter( POSITION position , void * newElement );
CStringList POSITION InsertAfter( POSITION position , const CString& newElement );

POSITION InsertAfter( POSITION position , LPCTSTR newElement );

Rückgabewert

Ein POSITION Wert, der position dem Parameter entspricht.

Beispiel

Eine Auflistung der Klasse finden Sie unter.See CObList::CObList for a listing of the CAge class.

CObList list;
POSITION pos1, pos2;
list.AddHead(new CAge(21));
list.AddHead(new CAge(40)); // List now contains (40, 21).
if ((pos1 = list.GetHeadPosition()) != NULL)
{
    pos2 = list.InsertAfter(pos1, new CAge(65));
}
#ifdef _DEBUG
   afxDump.SetDepth(1);
   afxDump << _T("InsertAfter example: ") << &list << _T("\n");
#endif

Die Ergebnisse dieses Programms sind wie folgt:

InsertAfter example: A CObList with 3 elements
a CAge at $4A44 40
a CAge at $4A64 65
a CAge at $4968 21

CObList::InsertBefore

Fügt dieser Liste ein Element vor dem Element an der angegebenen Position hinzu.

POSITION InsertBefore(
    POSITION position,
    CObject* newElement);

Parameter

position
Ein POSITION Wert, der von einem vorherigen GetNext, GetPrevoder Find Memberfunktionsaufruf zurückgegeben wird.

newElement
Der Objektzeiger, der dieser Liste hinzugefügt werden soll.

Rückgabewert

Ein POSITION Wert, der für iterations- oder Objektzeigerabrufe verwendet werden kann; NULL wenn die Liste leer ist.

In der folgenden Tabelle sind andere Memberfunktionen aufgeführt, die ähnlich sind CObList::InsertBefore.

Klasse Memberfunktion
CPtrList POSITION InsertBefore( POSITION position , void * newElement );
CStringList POSITION InsertBefore( POSITION position , const CString& newElement );

POSITION InsertBefore( POSITION position , LPCTSTR newElement );

Beispiel

Eine Auflistung der Klasse finden Sie unter.See CObList::CObList for a listing of the CAge class.

CObList list;
POSITION pos1, pos2;
list.AddHead(new CAge(21));
list.AddHead(new CAge(40)); // List now contains (40, 21).
if ((pos1 = list.GetTailPosition()) != NULL)
{
    pos2 = list.InsertBefore(pos1, new CAge(65));
}
#ifdef _DEBUG
   afxDump.SetDepth(1);
   afxDump << _T("InsertBefore example: ") << &list << _T("\n");
#endif      

Die Ergebnisse dieses Programms sind wie folgt:

InsertBefore example: A CObList with 3 elements
a CAge at $4AE2 40
a CAge at $4B02 65
a CAge at $49E6 21

CObList::IsEmpty

Gibt an, ob diese Liste keine Elemente enthält.

BOOL IsEmpty() const;

Rückgabewert

Nonzero, wenn diese Liste leer ist; andernfalls 0.

In der folgenden Tabelle sind andere Memberfunktionen aufgeführt, die ähnlich sind CObList::IsEmpty.

Klasse Memberfunktion
CPtrList BOOL IsEmpty( ) const;
CStringList BOOL IsEmpty( ) const;

Beispiel

Ein Beispiel hierfür finden Sie unter RemoveAll.

CObList::RemoveAll

Entfernt alle Elemente aus dieser Liste und gibt den zugeordneten CObList Speicher frei.

void RemoveAll();

Hinweise

Wenn die Liste bereits leer ist, wird kein Fehler generiert.

Wenn Sie Elemente aus einem CObListElement entfernen, entfernen Sie die Objektzeiger aus der Liste. Es liegt in Ihrer Verantwortung, die Objekte selbst zu löschen.

In der folgenden Tabelle sind andere Memberfunktionen aufgeführt, die ähnlich sind CObList::RemoveAll.

Klasse Memberfunktion
CPtrList void RemoveAll( );
CStringList void RemoveAll( );

Beispiel

Eine Auflistung der Klasse finden Sie unter.See CObList::CObList for a listing of the CAge class.

CObList list;
CAge* pa1;
CAge* pa2;
ASSERT(list.IsEmpty()); // Yes it is.
list.AddHead(pa1 = new CAge(21));
list.AddHead(pa2 = new CAge(40)); // List now contains (40, 21).
ASSERT(!list.IsEmpty()); // No it isn't.
list.RemoveAll(); // CAges aren't destroyed.
ASSERT(list.IsEmpty()); // Yes it is.
delete pa1;     // Now delete the CAge objects.
delete pa2;

CObList::RemoveAt

Entfernt das angegebene Element aus dieser Liste.

void RemoveAt(POSITION position);

Parameter

position
Die Position des Elements, das aus der Liste entfernt werden soll.

Hinweise

Wenn Sie ein Element aus einem CObListElement entfernen, entfernen Sie den Objektzeiger aus der Liste. Es liegt in Ihrer Verantwortung, die Objekte selbst zu löschen.

Sie müssen sicherstellen, dass Ihr POSITION Wert eine gültige Position in der Liste darstellt. Wenn sie ungültig ist, wird die Debugversion der Microsoft Foundation-Klassenbibliothek bestätigt.

In der folgenden Tabelle sind andere Memberfunktionen aufgeführt, die ähnlich sind CObList::RemoveAt.

Klasse Memberfunktion
CPtrList void RemoveAt( POSITION position );
CStringList void RemoveAt( POSITION position );

Beispiel

Achten Sie beim Entfernen eines Elements während einer Listeniteration darauf. Das folgende Beispiel zeigt eine Entfernungstechnik, die einen gültigen POSITION Wert garantiert.GetNext

Eine Auflistung der Klasse finden Sie unter.See CObList::CObList for a listing of the CAge class.

CObList list;
POSITION pos1, pos2;
CObject* pa;

list.AddHead(new CAge(21));
list.AddHead(new CAge(40));
list.AddHead(new CAge(65)); // List now contains (65 40, 21).
for (pos1 = list.GetHeadPosition(); (pos2 = pos1) != NULL;)
{
   if (*(CAge*)list.GetNext(pos1) == CAge(40))
   {
      pa = list.GetAt(pos2); // Save the old pointer for
                             //deletion.
      list.RemoveAt(pos2);
      delete pa; // Deletion avoids memory leak.
   }
}
#ifdef _DEBUG
afxDump.SetDepth(1);
afxDump << _T("RemoveAt example: ") << &list << _T("\n");
#endif      

Die Ergebnisse dieses Programms sind wie folgt:

RemoveAt example: A CObList with 2 elements

a CAge at $4C1E 65

a CAge at $4B22 21

CObList::RemoveHead

Entfernt das Element aus dem Kopf der Liste und gibt einen Zeiger darauf zurück.

CObject* RemoveHead();

Rückgabewert

Der CObject Zeiger, der sich zuvor am Anfang der Liste befindet.

Hinweise

Sie müssen sicherstellen, dass die Liste vor dem Aufrufen RemoveHeadnicht leer ist. Wenn die Liste leer ist, wird die Debugversion der Microsoft Foundation-Klassenbibliothek bestätigt. Wird verwendet IsEmpty , um zu überprüfen, ob die Liste Elemente enthält.

In der folgenden Tabelle sind andere Memberfunktionen aufgeführt, die ähnlich sind CObList::RemoveHead.

Klasse Memberfunktion
CPtrList void* RemoveHead( );
CStringList CString RemoveHead( );

Beispiel

Eine Auflistung der Klasse finden Sie unter.See CObList::CObList for a listing of the CAge class.

CObList list;
CAge* pa1;
CAge* pa2;

list.AddHead(pa1 = new CAge(21));
list.AddHead(pa2 = new CAge(40)); // List now contains (40, 21).
ASSERT(*(CAge*)list.RemoveHead() == CAge(40));  // Old head
ASSERT(*(CAge*)list.GetHead() == CAge(21));  // New head
delete pa1;
delete pa2;

CObList::RemoveTail

Entfernt das Element aus dem Tail der Liste und gibt einen Zeiger darauf zurück.

CObject* RemoveTail();

Rückgabewert

Ein Zeiger auf das Objekt, das sich am Ende der Liste befand.

Hinweise

Sie müssen sicherstellen, dass die Liste vor dem Aufrufen RemoveTailnicht leer ist. Wenn die Liste leer ist, wird die Debugversion der Microsoft Foundation-Klassenbibliothek bestätigt. Wird verwendet IsEmpty , um zu überprüfen, ob die Liste Elemente enthält.

In der folgenden Tabelle sind andere Memberfunktionen aufgeführt, die ähnlich sind CObList::RemoveTail.

Klasse Memberfunktion
CPtrList void* RemoveTail( );
CStringList CString RemoveTail( );

Beispiel

Eine Auflistung der Klasse finden Sie unter.See CObList::CObList for a listing of the CAge class.

CObList list;
CAge* pa1;
CAge* pa2;

list.AddHead(pa1 = new CAge(21));
list.AddHead(pa2 = new CAge(40)); // List now contains (40, 21).
ASSERT(*(CAge*)list.RemoveTail() == CAge(21));  // Old tail
ASSERT(*(CAge*)list.GetTail() == CAge(40));  // New tail
delete pa1;
delete pa2; // Clean up memory.      

CObList::SetAt

Legt das Element an einer bestimmten Position fest.

void SetAt(
    POSITION pos,
    CObject* newElement);

Parameter

pos
Das POSITION festzulegende Element.

newElement
Der CObject Zeiger, der in die Liste geschrieben werden soll.

Hinweise

Eine Variable vom Typ POSITION ist ein Schlüssel für die Liste. Sie ist nicht identisch mit einem Index, und Sie können nicht selbst auf einen POSITION Wert anwenden. SetAt schreibt den CObject Zeiger auf die angegebene Position in der Liste.

Sie müssen sicherstellen, dass Ihr POSITION Wert eine gültige Position in der Liste darstellt. Wenn sie ungültig ist, wird die Debugversion der Microsoft Foundation-Klassenbibliothek bestätigt.

In der folgenden Tabelle sind andere Memberfunktionen aufgeführt, die ähnlich sind CObList::SetAt.

Klasse Memberfunktion
CPtrList void SetAt( POSITION pos , const CString& newElement );
CStringList void SetAt( POSITION pos , LPCTSTR newElement );

Beispiel

Eine Auflistung der Klasse finden Sie unter.See CObList::CObList for a listing of the CAge class.

CObList list;
CObject* pa;
POSITION pos;

list.AddHead(new CAge(21));
list.AddHead(new CAge(40)); // List now contains (40, 21).
if ((pos = list.GetTailPosition()) != NULL)
{
   pa = list.GetAt(pos); // Save the old pointer for 
                         //deletion.
   list.SetAt(pos, new CAge(65));  // Replace the tail 
                                     //element.
   delete pa;  // Deletion avoids memory leak.
}
#ifdef _DEBUG
afxDump.SetDepth(1);
afxDump << _T("SetAt example: ") << &list << _T("\n");
#endif      

Die Ergebnisse dieses Programms sind wie folgt:

SetAt example: A CObList with 2 elements
a CAge at $4D98 40
a CAge at $4DB8 65

Siehe auch

CObject-Klasse
Hierarchiediagramm
CStringList Klasse
CPtrList Klasse