CAtlList-Klasse
Diese Klasse stellt Methoden zum Erstellen und Verwalten eines Listenobjekts bereit.
Syntax
template<typename E, class ETraits = CElementTraits<E>>
class CAtlList
Parameter
E
Der Elementtyp.
ETraits
Der Code zum Kopieren oder Verschieben von Elementen. Weitere Details finden Sie unter CElementTraits Class .
Member
Öffentliche Typedefs
Name | Beschreibung |
---|---|
CAtlList::INARGTYPE |
Öffentliche Konstruktoren
Name | Beschreibung |
---|---|
CAtlList::CAtlList | Der Konstruktor. |
CAtlList::~CAtlList | Der Destruktor. |
Öffentliche Methoden
Name | Beschreibung |
---|---|
CAtlList::AddHead | Rufen Sie diese Methode auf, um dem Kopf der Liste ein Element hinzuzufügen. |
CAtlList::AddHeadList | Rufen Sie diese Methode auf, um dem Kopf der Liste eine vorhandene Liste hinzuzufügen. |
CAtlList::AddTail | Rufen Sie diese Methode auf, um dem Listenende ein Element hinzuzufügen. |
CAtlList::AddTailList | Rufen Sie diese Methode auf, um der Liste eine vorhandene Liste hinzuzufügen. |
CAtlList::AssertValid | Rufen Sie diese Methode auf, um zu bestätigen, dass die Liste gültig ist. |
CAtlList::Find | Rufen Sie diese Methode auf, um die Liste nach dem angegebenen Element zu durchsuchen. |
CAtlList::FindIndex | Rufen Sie diese Methode auf, um die Position eines Elements mit einem Indexwert abzurufen. |
CAtlList::GetAt | Rufen Sie diese Methode auf, um das Element an einer angegebenen Position in der Liste zurückzugeben. |
CAtlList::GetCount | Rufen Sie diese Methode auf, um die Anzahl der Objekte in der Liste zurückzugeben. |
CAtlList::GetHead | Rufen Sie diese Methode auf, um das Element am Anfang der Liste zurückzugeben. |
CAtlList::GetHeadPosition | Rufen Sie diese Methode auf, um die Position des Kopfes der Liste abzurufen. |
CAtlList::GetNext | Rufen Sie diese Methode auf, um das nächste Element aus der Liste zurückzugeben. |
CAtlList::GetPrev | Rufen Sie diese Methode auf, um das vorherige Element aus der Liste zurückzugeben. |
CAtlList::GetTail | Rufen Sie diese Methode auf, um das Element am Ende der Liste zurückzugeben. |
CAtlList::GetTailPosition | Rufen Sie diese Methode auf, um die Position des Listenendes abzurufen. |
CAtlList::InsertAfter | Rufen Sie diese Methode auf, um ein neues Element nach der angegebenen Position in die Liste einzufügen. |
CAtlList::InsertBefore | Rufen Sie diese Methode auf, um ein neues Element vor der angegebenen Position in die Liste einzufügen. |
CAtlList::IsEmpty | Rufen Sie diese Methode auf, um festzustellen, ob die Liste leer ist. |
CAtlList::MoveToHead | Rufen Sie diese Methode auf, um das angegebene Element an den Kopf der Liste zu verschieben. |
CAtlList::MoveToTail | Rufen Sie diese Methode auf, um das angegebene Element an den Tail der Liste zu verschieben. |
CAtlList::RemoveAll | Rufen Sie diese Methode auf, um alle Elemente aus der Liste zu entfernen. |
CAtlList::RemoveAt | Rufen Sie diese Methode auf, um ein einzelnes Element aus der Liste zu entfernen. |
CAtlList::RemoveHead | Rufen Sie diese Methode auf, um das Element am Anfang der Liste zu entfernen. |
CAtlList::RemoveHeadNoReturn | Rufen Sie diese Methode auf, um das Element am Anfang der Liste zu entfernen, ohne einen Wert zurückzugeben. |
CAtlList::RemoveTail | Rufen Sie diese Methode auf, um das Element am Ende der Liste zu entfernen. |
CAtlList::RemoveTailNoReturn | Rufen Sie diese Methode auf, um das Element am Ende der Liste zu entfernen, ohne einen Wert zurückzugeben. |
CAtlList::SetAt | Rufen Sie diese Methode auf, um den Wert des Elements an einer bestimmten Position in der Liste festzulegen. |
CAtlList::SwapElements | Rufen Sie diese Methode auf, um Elemente in der Liste auszutauschen. |
Hinweise
Die CAtlList
Klasse unterstützt sortierte Listen von nicht geordneten Objekten, auf die sequenziell oder nach Wert zugegriffen werden kann. CAtlList
Listen verhalten sich wie doubly verknüpfte Listen. Jede Liste hat einen Kopf und einen Tail, und neue Elemente (oder Listen in einigen Fällen) können entweder am Ende der Liste hinzugefügt oder vor oder nach bestimmten Elementen eingefügt werden.
CAtlList
Die meisten Methoden verwenden einen Positionswert. Dieser Wert wird von den Methoden verwendet, um auf den tatsächlichen Speicherort des Speichers zu verweisen, an dem die Elemente gespeichert sind, und sollte nicht direkt berechnet oder vorhergesagt werden. Wenn auf das nth-Elementin der Liste zugegriffen werden muss, gibt die Methode "CAtlList::FindIndex " den entsprechenden Positionswert für einen bestimmten Index zurück. Die Methoden CAtlList::GetNext und CAtlList::GetPrev können verwendet werden, um die Objekte in der Liste zu durchlaufen.
Weitere Informationen zu den auflistungsklassen, die mit ATL verfügbar sind, finden Sie unter ATL-Auflistungsklassen.
Anforderungen
Kopfzeile: atlcoll.h
CAtlList::AddHead
Rufen Sie diese Methode auf, um dem Kopf der Liste ein Element hinzuzufügen.
POSITION AddHead();
POSITION AddHead(INARGTYPE element);
Parameter
Element
Das neue Element.
Rückgabewert
Gibt die Position des neu hinzugefügten Elements zurück.
Hinweise
Wenn die erste Version verwendet wird, wird ein leeres Element mit dem Standardkonstruktor und nicht mit dem Kopierkonstruktor erstellt.
Beispiel
// Declare a list of integers
CAtlList<int> myList;
// Add some elements, each to the head of the list.
// As each new element is added, the previous head is
// pushed down the list.
myList.AddHead(42);
myList.AddHead(49);
// Confirm the value currently at the head of the list
ATLASSERT(myList.GetHead() == 49);
// Confirm the value currently at the tail of the list
ATLASSERT(myList.GetTail() == 42);
CAtlList::AddHeadList
Rufen Sie diese Methode auf, um dem Kopf der Liste eine vorhandene Liste hinzuzufügen.
void AddHeadList(const CAtlList<E, ETraits>* plNew);
Parameter
PlNew
Die hinzuzufügende Liste.
Hinweise
Die Liste, auf die von PlNew verwiesen wird, wird am Anfang der vorhandenen Liste eingefügt. Bei Debugbuilds tritt ein Assertionsfehler auf, wenn plNew gleich NULL ist.
Beispiel
// Define two lists of integers
CAtlList<int> myList1;
CAtlList<int> myList2;
// Fill up the first list
myList1.AddTail(1);
myList1.AddTail(2);
myList1.AddTail(3);
// Add an element to the second list
myList2.AddTail(4);
// Insert the first list into the second
myList2.AddHeadList(&myList1);
// The second list now contains:
// 1, 2, 3, 4
CAtlList::AddTail
Rufen Sie diese Methode auf, um dem Listenende ein Element hinzuzufügen.
POSITION AddTail();
POSITION AddTail(INARGTYPE element);
Parameter
Element
Das hinzuzufügende Element.
Rückgabewert
Gibt die POSITION des neu hinzugefügten Elements zurück.
Hinweise
Wenn die erste Version verwendet wird, wird ein leeres Element mit dem Standardkonstruktor und nicht mit dem Kopierkonstruktor erstellt. Das Element wird am Ende der Liste hinzugefügt, sodass es nun zum Schwanz wird. Diese Methode kann mit einer leeren Liste verwendet werden.
Beispiel
// Define the list
CAtlList<int> myList;
// Add elements to the tail
myList.AddTail(1);
myList.AddTail(2);
myList.AddTail(3);
// Confirm the current head of the list
ATLASSERT(myList.GetHead() == 1);
// Confirm the current tail of the list
ATLASSERT(myList.GetTail() == 3);
CAtlList::AddTailList
Rufen Sie diese Methode auf, um der Liste eine vorhandene Liste hinzuzufügen.
void AddTailList(const CAtlList<E, ETraits>* plNew);
Parameter
PlNew
Die hinzuzufügende Liste.
Hinweise
Die Liste, auf die plNew verweist, wird nach dem letzten Element (falls vorhanden) im Listenobjekt eingefügt. Das letzte Element in der PlNew-Liste wird daher zum Schwanz. Bei Debugbuilds tritt ein Assertionsfehler auf, wenn plNew gleich NULL ist.
Beispiel
// Define two integer lists
CAtlList<int> myList1;
CAtlList<int> myList2;
// Fill up the first list
myList1.AddTail(1);
myList1.AddTail(2);
myList1.AddTail(3);
// Add an element to the second list
myList2.AddTail(4);
// Insert the first list into the second
myList2.AddTailList(&myList1);
// The second list now contains:
// 4, 1, 2, 3
CAtlList::AssertValid
Rufen Sie diese Methode auf, um zu bestätigen, dass die Liste gültig ist.
void AssertValid() const;
Hinweise
In Debugbuilds tritt ein Assertionsfehler auf, wenn das Listenobjekt ungültig ist. Um gültig zu sein, muss eine leere Liste sowohl den Kopf als auch den Schwanz aufweisen, der auf NULL zeigt, und eine Liste, die nicht leer ist, muss sowohl den Kopf als auch den Schwanz aufweisen, der auf gültige Adressen zeigt.
Beispiel
// Define the list
CAtlList<int> myList;
// AssertValid only exists in debug builds
#ifdef _DEBUG
myList.AssertValid();
#endif
CAtlList::CAtlList
Der Konstruktor.
CAtlList(UINT nBlockSize = 10) throw();
Parameter
nBlockSize
Die Blockgröße.
Hinweise
Der Konstruktor für das CAtlList
Objekt. Die Blockgröße ist ein Maß für die Menge des Arbeitsspeichers, der zugewiesen wird, wenn ein neues Element erforderlich ist. Größere Blockgrößen reduzieren Aufrufe an Speicherzuweisungsroutinen, verwenden jedoch weitere Ressourcen.
Beispiel
// Define two lists
CAtlList<int> myList1;
CAtlList<double> myList2;
CAtlList::~CAtlList
Der Destruktor.
~CAtlList() throw();
Hinweise
Gibt alle zugeordneten Ressourcen frei, einschließlich eines Aufrufs von CAtlList::RemoveAll , um alle Elemente aus der Liste zu entfernen.
In Debugbuilds tritt ein Assertionsfehler auf, wenn die Liste nach dem Aufruf RemoveAll
noch einige Elemente enthält.
CAtlList::Find
Rufen Sie diese Methode auf, um die Liste nach dem angegebenen Element zu durchsuchen.
POSITION Find(INARGTYPE element, POSITION posStartAfter = NULL) const throw();
Parameter
Element
Das Element, das in der Liste gefunden werden soll.
posStartAfter
Die Startposition für die Suche. Wenn kein Wert angegeben ist, beginnt die Suche mit dem Head-Element.
Rückgabewert
Gibt den POSITION-Wert des Elements zurück, falls gefunden, andernfalls WIRD NULL zurückgegeben.
Hinweise
In Debugbuilds tritt ein Assertionsfehler auf, wenn das Listenobjekt ungültig ist oder der posStartAfter-Wert außerhalb des Gültigen Bereichs liegt.
Beispiel
// Define the integer list
CAtlList<int> myList;
// Populate the list
myList.AddTail(100);
myList.AddTail(200);
myList.AddTail(300);
myList.AddTail(400);
// Find the '300' element in the list,
// starting from the list head.
POSITION myPos = myList.Find(300);
// Confirm that the element was found
ATLASSERT(myList.GetAt(myPos) == 300);
CAtlList::FindIndex
Rufen Sie diese Methode auf, um die Position eines Elements mit einem Indexwert abzurufen.
POSITION FindIndex(size_t iElement) const throw();
Parameter
iElement
Der nullbasierte Index des erforderlichen Listenelements.
Rückgabewert
Gibt den entsprechenden POSITION-Wert oder NULL zurück, wenn iElement außerhalb des Bereichs liegt.
Hinweise
Diese Methode gibt die POSITION zurück, die einem bestimmten Indexwert entspricht, sodass der Zugriff auf das nth-Elementin der Liste ermöglicht wird.
In Debugbuilds tritt ein Assertionsfehler auf, wenn das Listenobjekt ungültig ist.
Beispiel
// Define the integer list
CAtlList<int> myList;
// Populate the list
for (int i = 0; i < 100; i++)
{
myList.AddTail(i);
}
// Iterate through the entire list
for (size_t j = 0; j < myList.GetCount(); j++)
{
size_t i = myList.GetAt(myList.FindIndex(j));
ATLASSERT(i == j);
}
CAtlList::GetAt
Rufen Sie diese Methode auf, um das Element an einer angegebenen Position in der Liste zurückzugeben.
E& GetAt(POSITION pos) throw();
const E& GetAt(POSITION pos) const throw();
Parameter
pos
Der POSITION-Wert, der ein bestimmtes Element angibt.
Rückgabewert
Ein Verweis auf das Element oder eine Kopie des Elements.
Hinweise
Wenn die Liste lautet const
, GetAt
wird eine Kopie des Elements zurückgegeben. Dadurch kann die Methode nur auf der rechten Seite einer Zuordnungsanweisung verwendet werden und schützt die Liste vor Änderungen.
Wenn die Liste nicht const
ist, GetAt
wird ein Verweis auf das Element zurückgegeben. Auf diese Weise kann die Methode auf beiden Seiten einer Zuordnungsanweisung verwendet werden und ermöglicht somit die Änderung der Listeneinträge.
In Debugbuilds tritt ein Assertionsfehler auf, wenn pos gleich NULL ist.
Beispiel
Sehen Sie sich das Beispiel für CAtlList::FindIndex an.
CAtlList::GetCount
Rufen Sie diese Methode auf, um die Anzahl der Objekte in der Liste zurückzugeben.
size_t GetCount() const throw();
Rückgabewert
Gibt die Anzahl von Elementen in der Liste zurück.
Beispiel
Sehen Sie sich das Beispiel für CAtlList::Find an.
CAtlList::GetHead
Rufen Sie diese Methode auf, um das Element am Anfang der Liste zurückzugeben.
E& GetHead() throw();
const E& GetHead() const throw();
Rückgabewert
Gibt einen Verweis auf das Element am Anfang der Liste zurück oder eine Kopie des Elements.
Hinweise
Wenn die Liste lautet const
, GetHead
wird eine Kopie des Elements am Anfang der Liste zurückgegeben. Dadurch kann die Methode nur auf der rechten Seite einer Zuordnungsanweisung verwendet werden und schützt die Liste vor Änderungen.
Wenn die Liste nicht const
vorhanden ist, GetHead
wird ein Verweis auf das Element am Anfang der Liste zurückgegeben. Auf diese Weise kann die Methode auf beiden Seiten einer Zuordnungsanweisung verwendet werden und ermöglicht somit die Änderung der Listeneinträge.
Bei Debugbuilds tritt ein Assertionsfehler auf, wenn der Kopf der Liste auf NULL verweist.
Beispiel
Sehen Sie sich das Beispiel für CAtlList::AddHead an.
CAtlList::GetHeadPosition
Rufen Sie diese Methode auf, um die Position des Kopfes der Liste abzurufen.
POSITION GetHeadPosition() const throw();
Rückgabewert
Gibt den POSITION-Wert zurück, der dem Element am Anfang der Liste entspricht.
Hinweise
Wenn die Liste leer ist, ist der zurückgegebene Wert NULL.
Beispiel
// Define the integer list
CAtlList<int> myList;
int i;
// Populate the list
for (i = 0; i < 100; i++)
{
myList.AddTail(i);
}
// Get the starting position value
POSITION myPos = myList.GetHeadPosition();
// Iterate through the entire list
i = 0;
int j;
do {
j = myList.GetNext(myPos);
ATLASSERT(i == j);
i++;
} while (myPos != NULL);
CAtlList::GetNext
Rufen Sie diese Methode auf, um das nächste Element aus der Liste zurückzugeben.
E& GetNext(POSITION& pos) throw();
const E& GetNext(POSITION& pos) const throw();
Parameter
pos
Ein POSITION-Wert, der von einem vorherigen Aufruf von GetNext
, CAtlList::GetHeadPosition" oder einer anderen CAtlList
Methode zurückgegeben wird.
Rückgabewert
Wenn die Liste lautet const
, GetNext
wird eine Kopie des nächsten Elements der Liste zurückgegeben. Dadurch kann die Methode nur auf der rechten Seite einer Zuordnungsanweisung verwendet werden und schützt die Liste vor Änderungen.
Wenn die Liste nicht const
vorhanden ist, GetNext
wird ein Verweis auf das nächste Element der Liste zurückgegeben. Auf diese Weise kann die Methode auf beiden Seiten einer Zuordnungsanweisung verwendet werden und ermöglicht somit die Änderung der Listeneinträge.
Hinweise
Der POSITION-Zähler ( pos) wird aktualisiert, um auf das nächste Element in der Liste zu zeigen, oder NULL, wenn keine weiteren Elemente vorhanden sind. In Debugbuilds tritt ein Assertionsfehler auf, wenn pos gleich NULL ist.
Beispiel
Sehen Sie sich das Beispiel für CAtlList::GetHeadPosition an.
CAtlList::GetPrev
Rufen Sie diese Methode auf, um das vorherige Element aus der Liste zurückzugeben.
E& GetPrev(POSITION& pos) throw();
const E& GetPrev(POSITION& pos) const throw();
Parameter
pos
Ein POSITION-Wert, der von einem vorherigen Aufruf von GetPrev
, CAtlList::GetTailPosition" oder einer anderen CAtlList
Methode zurückgegeben wird.
Rückgabewert
Wenn die Liste lautet const
, GetPrev
wird eine Kopie eines Elements der Liste zurückgegeben. Dadurch kann die Methode nur auf der rechten Seite einer Zuordnungsanweisung verwendet werden und schützt die Liste vor Änderungen.
Wenn die Liste nicht const
vorhanden ist, GetPrev
wird ein Verweis auf ein Element der Liste zurückgegeben. Auf diese Weise kann die Methode auf beiden Seiten einer Zuordnungsanweisung verwendet werden und ermöglicht somit die Änderung der Listeneinträge.
Hinweise
Der POSITION-Zähler ( pos) wird aktualisiert, um auf das vorherige Element in der Liste zu verweisen, oder NULL, wenn keine weiteren Elemente vorhanden sind. In Debugbuilds tritt ein Assertionsfehler auf, wenn pos gleich NULL ist.
Beispiel
Sehen Sie sich das Beispiel für CAtlList::GetTailPosition an.
CAtlList::GetTail
Rufen Sie diese Methode auf, um das Element am Ende der Liste zurückzugeben.
E& GetTail() throw();
const E& GetTail() const throw();
Rückgabewert
Gibt einen Verweis auf oder eine Kopie des Elements am Ende der Liste zurück.
Hinweise
Wenn die Liste lautet const
, GetTail
wird eine Kopie des Elements am Anfang der Liste zurückgegeben. Dadurch kann die Methode nur auf der rechten Seite einer Zuordnungsanweisung verwendet werden und schützt die Liste vor Änderungen.
Wenn die Liste nicht const
vorhanden ist, GetTail
wird ein Verweis auf das Element am Anfang der Liste zurückgegeben. Auf diese Weise kann die Methode auf beiden Seiten einer Zuordnungsanweisung verwendet werden und ermöglicht somit die Änderung der Listeneinträge.
In Debugbuilds tritt ein Assertionsfehler auf, wenn der Tail der Liste auf NULL verweist.
Beispiel
Sehen Sie sich das Beispiel für CAtlList::AddTail an.
CAtlList::GetTailPosition
Rufen Sie diese Methode auf, um die Position des Listenendes abzurufen.
POSITION GetTailPosition() const throw();
Rückgabewert
Gibt den POSITION-Wert zurück, der dem Element am Ende der Liste entspricht.
Hinweise
Wenn die Liste leer ist, ist der zurückgegebene Wert NULL.
Beispiel
// Define the integer list
CAtlList<int> myList;
int i;
// Populate the list
for (i = 0; i < 100; i++)
{
myList.AddHead(i);
}
// Get the starting position value
POSITION myP = myList.GetTailPosition();
// Iterate through the entire list
i = 0;
int j;
do {
j = myList.GetPrev(myP);
ATLASSERT(i == j);
i++;
} while (myP != NULL);
CAtlList::INARGTYPE
Typ, der verwendet wird, wenn ein Element als Eingabeargument übergeben wird.
typedef ETraits::INARGTYPE INARGTYPE;
CAtlList::InsertAfter
Rufen Sie diese Methode auf, um ein neues Element nach der angegebenen Position in die Liste einzufügen.
POSITION InsertAfter(POSITION pos, INARGTYPE element);
Parameter
pos
Der POSITION-Wert, nach dem das neue Element eingefügt wird.
Element
Das einzufügende Element.
Rückgabewert
Gibt den POSITION-Wert des neuen Elements zurück.
Hinweise
In Debugbuilds tritt ein Assertionsfehler auf, wenn die Liste ungültig ist, wenn das Einfügen fehlschlägt oder versucht wird, das Element nach dem Tail einzufügen.
Beispiel
// Define the integer list
CAtlList<int> myList;
// Populate the list
POSITION myPos = myList.AddHead(1);
myPos = myList.InsertAfter(myPos, 2);
myPos = myList.InsertAfter(myPos, 3);
// Confirm the tail value is as expected
ATLASSERT(myList.GetTail() == 3);
CAtlList::InsertBefore
Rufen Sie diese Methode auf, um ein neues Element vor der angegebenen Position in die Liste einzufügen.
POSITION InsertBefore(POSITION pos, INARGTYPE element);
Parameter
pos
Das neue Element wird vor diesem POSITION-Wert in die Liste eingefügt.
Element
Das einzufügende Element.
Rückgabewert
Gibt den POSITION-Wert des neuen Elements zurück.
Hinweise
In Debugbuilds tritt ein Assertionsfehler auf, wenn die Liste ungültig ist, wenn das Einfügen fehlschlägt oder versucht wird, das Element vor dem Kopf einzufügen.
Beispiel
// Define the integer list
CAtlList<int> myList;
// Populate the list
POSITION myPos = myList.AddHead(1);
myPos = myList.InsertBefore(myPos, 2);
myPos = myList.InsertBefore(myPos, 3);
// Confirm the head value is as expected
ATLASSERT(myList.GetHead() == 3);
CAtlList::IsEmpty
Rufen Sie diese Methode auf, um festzustellen, ob die Liste leer ist.
bool IsEmpty() const throw();
Rückgabewert
Gibt true zurück, wenn die Liste keine Objekte enthält, andernfalls "false".
Beispiel
// Define the integer list
CAtlList<int> myList;
// Populate the list
myList.AddTail(1);
myList.AddTail(2);
myList.AddTail(3);
myList.AddTail(4);
// Confirm not empty
ATLASSERT(myList.IsEmpty() == false);
// Remove the tail element
myList.RemoveTailNoReturn();
// Confirm not empty
ATLASSERT(myList.IsEmpty() == false);
// Remove the head element
myList.RemoveHeadNoReturn();
// Confirm not empty
ATLASSERT(myList.IsEmpty() == false);
// Remove all remaining elements
myList.RemoveAll();
// Confirm empty
ATLASSERT(myList.IsEmpty() == true);
CAtlList::MoveToHead
Rufen Sie diese Methode auf, um das angegebene Element an den Kopf der Liste zu verschieben.
void MoveToHead(POSITION pos) throw();
Parameter
pos
Der POSITION-Wert des zu verschiebenden Elements.
Hinweise
Das angegebene Element wird von der aktuellen Position an den Kopf der Liste verschoben. In Debugbuilds tritt ein Assertionsfehler auf, wenn pos gleich NULL ist.
Beispiel
// Define the integer list
CAtlList<int> myList;
// Populate the list
myList.AddTail(1);
myList.AddTail(2);
myList.AddTail(3);
myList.AddTail(4);
// Move the tail element to the head
myList.MoveToHead(myList.GetTailPosition());
// Confirm the head is as expected
ATLASSERT(myList.GetHead() == 4);
// Move the head element to the tail
myList.MoveToTail(myList.GetHeadPosition());
// Confirm the tail is as expected
ATLASSERT(myList.GetTail() == 4);
CAtlList::MoveToTail
Rufen Sie diese Methode auf, um das angegebene Element an den Tail der Liste zu verschieben.
void MoveToTail(POSITION pos) throw();
Parameter
pos
Der POSITION-Wert des zu verschiebenden Elements.
Hinweise
Das angegebene Element wird von seiner aktuellen Position an den Tail der Liste verschoben. In Debugbuilds tritt ein Assertionsfehler auf, wenn pos gleich NULL ist.
Beispiel
Sehen Sie sich das Beispiel für CAtlList::MoveToHead an.
CAtlList::RemoveAll
Rufen Sie diese Methode auf, um alle Elemente aus der Liste zu entfernen.
void RemoveAll() throw();
Hinweise
Mit dieser Methode werden alle Elemente aus der Liste entfernt und der zugeordnete Speicher freigegeben. Bei Debugbuilds wird ein ATLASSERT ausgelöst, wenn alle Elemente nicht gelöscht werden oder die Listenstruktur beschädigt wurde.
Beispiel
Sehen Sie sich das Beispiel für CAtlList::IsEmpty an.
CAtlList::RemoveAt
Rufen Sie diese Methode auf, um ein einzelnes Element aus der Liste zu entfernen.
void RemoveAt(POSITION pos) throw();
Parameter
pos
Der POSITION-Wert des zu entfernenden Elements.
Hinweise
Das element, auf das von Pos verwiesen wird, wird entfernt, und der Speicher wird freigegeben. Es ist akzeptabel, RemoveAt
den Kopf oder den Schwanz der Liste zu entfernen.
In Debugbuilds tritt ein Assertionsfehler auf, wenn die Liste ungültig ist oder wenn das Entfernen des Elements dazu führt, dass die Liste auf den Arbeitsspeicher zugreift, der nicht Teil der Listenstruktur ist.
Beispiel
// Define the integer list
CAtlList<int> myList;
// Populate the list
myList.AddTail(100);
myList.AddTail(200);
myList.AddTail(300);
// Use RemoveAt to remove elements one by one
myList.RemoveAt(myList.Find(100));
myList.RemoveAt(myList.Find(200));
myList.RemoveAt(myList.Find(300));
// Confirm all have been deleted
ATLASSERT(myList.IsEmpty() == true);
CAtlList::RemoveHead
Rufen Sie diese Methode auf, um das Element am Anfang der Liste zu entfernen.
E RemoveHead();
Rückgabewert
Gibt das Element am Anfang der Liste zurück.
Hinweise
Das Head-Element wird aus der Liste gelöscht, und der Arbeitsspeicher wird freigegeben. Eine Kopie des Elements wird zurückgegeben. In Debugbuilds tritt ein Assertionsfehler auf, wenn die Liste leer ist.
Beispiel
// Define the integer list
CAtlList<int> myList;
// Populate the list
myList.AddTail(100);
myList.AddTail(200);
myList.AddTail(300);
// Confirm the head of the list
ATLASSERT(myList.GetHead() == 100);
// Remove the head of the list
ATLASSERT(myList.RemoveHead() == 100);
// Confirm the new head of the list
ATLASSERT(myList.GetHead() == 200);
CAtlList::RemoveHeadNoReturn
Rufen Sie diese Methode auf, um das Element am Anfang der Liste zu entfernen, ohne einen Wert zurückzugeben.
void RemoveHeadNoReturn() throw();
Hinweise
Das Head-Element wird aus der Liste gelöscht, und der Arbeitsspeicher wird freigegeben. In Debugbuilds tritt ein Assertionsfehler auf, wenn die Liste leer ist.
Beispiel
Sehen Sie sich das Beispiel für CAtlList::IsEmpty an.
CAtlList::RemoveTail
Rufen Sie diese Methode auf, um das Element am Ende der Liste zu entfernen.
E RemoveTail();
Rückgabewert
Gibt das Element am Ende der Liste zurück.
Hinweise
Das Tail-Element wird aus der Liste gelöscht, und der Speicher wird freigegeben. Eine Kopie des Elements wird zurückgegeben. In Debugbuilds tritt ein Assertionsfehler auf, wenn die Liste leer ist.
Beispiel
// Define the integer list
CAtlList<int> myList;
// Populate the list
myList.AddTail(100);
myList.AddTail(200);
myList.AddTail(300);
// Confirm the tail of the list
ATLASSERT(myList.GetTail() == 300);
// Remove the tail of the list
ATLASSERT(myList.RemoveTail() == 300);
// Confirm the new tail of the list
ATLASSERT(myList.GetTail() == 200);
CAtlList::RemoveTailNoReturn
Rufen Sie diese Methode auf, um das Element am Ende der Liste zu entfernen, ohne einen Wert zurückzugeben.
void RemoveTailNoReturn() throw();
Hinweise
Das Tail-Element wird aus der Liste gelöscht, und der Speicher wird freigegeben. In Debugbuilds tritt ein Assertionsfehler auf, wenn die Liste leer ist.
Beispiel
Sehen Sie sich das Beispiel für CAtlList::IsEmpty an.
CAtlList::SetAt
Rufen Sie diese Methode auf, um den Wert des Elements an einer bestimmten Position in der Liste festzulegen.
void SetAt(POSITION pos, INARGTYPE element);
Parameter
pos
Der POSITION-Wert, der dem zu ändernden Element entspricht.
Element
Der neue Elementwert.
Hinweise
Ersetzt den vorhandenen Wert durch ein Element. In Debugbuilds tritt ein Assertionsfehler auf, wenn pos gleich NULL ist.
Beispiel
// Define the integer list
CAtlList<int> myList;
// Populate the list
myList.AddTail(100);
myList.AddTail(200);
// Use SetAt to change the values stored in the head and
// tail of the list
myList.SetAt(myList.GetHeadPosition(), myList.GetHead() * 10);
myList.SetAt(myList.GetTailPosition(), myList.GetTail() * 10);
// Confirm the values
ATLASSERT(myList.GetHead() == 1000);
ATLASSERT(myList.GetTail() == 2000);
CAtlList::SwapElements
Rufen Sie diese Methode auf, um Elemente in der Liste auszutauschen.
void SwapElements(POSITION pos1, POSITION pos2) throw();
Parameter
pos1
Der erste POSITION-Wert.
pos2
Der zweite POSITION-Wert.
Hinweise
Tauscht die Elemente an den beiden angegebenen Positionen aus. In Debugbuilds tritt ein Assertionsfehler auf, wenn ein Positionswert gleich NULL ist.
Beispiel
// Define the integer list
CAtlList<int> myList;
// Populate the list
for (int i = 0; i < 100; i++)
{
myList.AddHead(i);
}
// Order is: 99, 98, 97, 96...
ATLASSERT(myList.GetHead() == 99);
ATLASSERT(myList.GetTail() == 0);
// Perform a crude bubble sort
for (int j = 0; j < 100; j++)
{
for(int i = 0; i < 99; i++)
{
if (myList.GetAt(myList.FindIndex(i)) >
myList.GetAt(myList.FindIndex(i+1)))
{
myList.SwapElements(myList.FindIndex(i), myList.FindIndex(i+1));
}
}
}
// Order is: 0, 1, 2, 3...
ATLASSERT(myList.GetHead() == 0);
ATLASSERT(myList.GetTail() == 99);