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 CObject
objekten 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 CObList
finden Sie im Artikel Sammlungen.
Vererbungshierarchie
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 CObject
in 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 CObList
Zeiger 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 CObList
Zeiger 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 GetHead
nicht 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 rPosition
das 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
, GetHeadPosition
oder 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 Find
einem 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 rPosition
das 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 Find
einem 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 GetTail
nicht 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
, GetPrev
oder 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
, GetPrev
oder 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 CObList
Element 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 CObList
Element 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 RemoveHead
nicht 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 RemoveTail
nicht 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