Udostępnij za pośrednictwem


Klasa CAtlList

Ta klasa udostępnia metody tworzenia obiektu listy i zarządzania nimi.

Składnia

template<typename E, class ETraits = CElementTraits<E>>
class CAtlList

Parametry

E
Typ elementu.

ETraits
Kod używany do kopiowania lub przenoszenia elementów. Aby uzyskać więcej informacji, zobacz Klasa CElementTraits.

Członkowie

Definicje typów publicznych

Nazwa/nazwisko opis
CAtlList::INARGTYPE

Konstruktory publiczne

Nazwa/nazwisko opis
CAtlList::CAtlList Konstruktor.
CAtlList::~CAtlList Destruktora.

Metody publiczne

Nazwa/nazwisko opis
CAtlList::AddHead Wywołaj tę metodę, aby dodać element do nagłówka listy.
CAtlList::AddHeadList Wywołaj tę metodę, aby dodać istniejącą listę do nagłówka listy.
CAtlList::AddTail Wywołaj tę metodę, aby dodać element do końca tej listy.
CAtlList::AddTailList Wywołaj tę metodę, aby dodać istniejącą listę do końca tej listy.
CAtlList::AssertValid Wywołaj tę metodę, aby potwierdzić, że lista jest prawidłowa.
CAtlList::Find Wywołaj tę metodę, aby wyszukać listę dla określonego elementu.
CAtlList::FindIndex Wywołaj tę metodę, aby uzyskać pozycję elementu, biorąc pod uwagę wartość indeksu.
CAtlList::GetAt Wywołaj tę metodę, aby zwrócić element na określonej pozycji na liście.
CAtlList::GetCount Wywołaj tę metodę, aby zwrócić liczbę obiektów na liście.
CAtlList::GetHead Wywołaj tę metodę, aby zwrócić element na czele listy.
CAtlList::GetHeadPosition Wywołaj tę metodę, aby uzyskać pozycję głowy listy.
CAtlList::GetNext Wywołaj tę metodę, aby zwrócić następny element z listy.
CAtlList::GetPrev Wywołaj tę metodę, aby zwrócić poprzedni element z listy.
CAtlList::GetTail Wywołaj tę metodę, aby zwrócić element na ogonie listy.
CAtlList::GetTailPosition Wywołaj tę metodę, aby uzyskać położenie ogona listy.
CAtlList::InsertAfter Wywołaj tę metodę, aby wstawić nowy element do listy po określonej pozycji.
CAtlList::InsertBefore Wywołaj tę metodę, aby wstawić nowy element do listy przed określoną pozycją.
CAtlList::IsEmpty Wywołaj tę metodę, aby określić, czy lista jest pusta.
CAtlList::MoveToHead Wywołaj tę metodę, aby przenieść określony element na głowę listy.
CAtlList::MoveToTail Wywołaj tę metodę, aby przenieść określony element na koniec listy.
CAtlList::RemoveAll Wywołaj tę metodę, aby usunąć wszystkie elementy z listy.
CAtlList::RemoveAt Wywołaj tę metodę, aby usunąć pojedynczy element z listy.
CAtlList::RemoveHead Wywołaj tę metodę, aby usunąć element na czele listy.
CAtlList::RemoveHeadNoReturn Wywołaj tę metodę, aby usunąć element na czele listy bez zwracania wartości.
CAtlList::RemoveTail Wywołaj tę metodę, aby usunąć element na ogonie listy.
CAtlList::RemoveTailNoReturn Wywołaj tę metodę, aby usunąć element na kącie listy bez zwracania wartości.
CAtlList::SetAt Wywołaj tę metodę, aby ustawić wartość elementu na danej pozycji na liście.
CAtlList::SwapElements Wywołaj tę metodę, aby zamienić elementy na liście.

Uwagi

Klasa CAtlList obsługuje uporządkowane listy obiektów nieudostępnianych sekwencyjnie lub według wartości. CAtlList listy zachowują się jak listy połączone podwójnie. Każda lista ma nagłówek i ogon, a nowe elementy (lub listy w niektórych przypadkach) można dodać na końcu listy lub wstawić przed lub po określonych elementach.

CAtlList Większość metod korzysta z wartości pozycji. Ta wartość jest używana przez metody odwołujące się do rzeczywistej lokalizacji pamięci, w której są przechowywane elementy, i nie powinny być obliczane ani przewidywane bezpośrednio. Jeśli konieczne jest uzyskanie dostępu do nelementu na liście, metoda CAtlList::FindIndex zwróci odpowiednią wartość pozycji dla danego indeksu. Metody CAtlList::GetNext i CAtlList::GetPrev mogą służyć do iterowania obiektów na liście.

Aby uzyskać więcej informacji na temat klas kolekcji dostępnych w atl, zobacz Klasy kolekcji ATL.

Wymagania

Nagłówek: atlcoll.h

CAtlList::AddHead

Wywołaj tę metodę, aby dodać element do nagłówka listy.

POSITION AddHead();
POSITION AddHead(INARGTYPE element);

Parametry

Element
Nowy element.

Wartość zwracana

Zwraca położenie nowo dodanego elementu.

Uwagi

Jeśli jest używana pierwsza wersja, pusty element jest tworzony przy użyciu jego konstruktora domyślnego, a nie jego konstruktora kopiowania.

Przykład

// 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

Wywołaj tę metodę, aby dodać istniejącą listę do nagłówka listy.

void AddHeadList(const CAtlList<E, ETraits>* plNew);

Parametry

plNew
Lista do dodania.

Uwagi

Lista wskazywana przez plNew jest wstawiana na początku istniejącej listy. W kompilacjach debugowania wystąpi błąd asercji, jeśli plNew jest równy null.

Przykład

// 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

Wywołaj tę metodę, aby dodać element do końca tej listy.

POSITION AddTail();
POSITION AddTail(INARGTYPE element);

Parametry

Element
Element do dodania.

Wartość zwracana

Zwraca pozycję nowo dodanego elementu.

Uwagi

Jeśli jest używana pierwsza wersja, pusty element jest tworzony przy użyciu jego konstruktora domyślnego, a nie jego konstruktora kopiowania. Element jest dodawany na końcu listy, więc teraz staje się ogonem. Tej metody można użyć z pustą listą.

Przykład

// 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

Wywołaj tę metodę, aby dodać istniejącą listę do końca tej listy.

void AddTailList(const CAtlList<E, ETraits>* plNew);

Parametry

plNew
Lista do dodania.

Uwagi

Lista wskazywana przez plNew jest wstawiana po ostatnim elemedycie (jeśli istnieje) w obiekcie listy. Ostatni element na liście plNew staje się zatem ogonem. W kompilacjach debugowania wystąpi błąd asercji, jeśli plNew jest równy null.

Przykład

// 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

Wywołaj tę metodę, aby potwierdzić, że lista jest prawidłowa.

void AssertValid() const;

Uwagi

W kompilacjach debugowania wystąpi błąd asercji, jeśli obiekt listy jest nieprawidłowy. Aby być prawidłowym, pusta lista musi zawierać zarówno nagłówek, jak i ogon wskazujący wartość NULL, a lista, która nie jest pusta, musi zawierać zarówno nagłówek, jak i ogon wskazujący prawidłowe adresy.

Przykład

// Define the list
CAtlList<int> myList;

// AssertValid only exists in debug builds
#ifdef _DEBUG
myList.AssertValid();
#endif   

CAtlList::CAtlList

Konstruktor.

CAtlList(UINT nBlockSize = 10) throw();

Parametry

nBlockSize
Rozmiar bloku.

Uwagi

Konstruktor obiektu CAtlList . Rozmiar bloku to miara ilości pamięci przydzielonej, gdy jest wymagany nowy element. Większe rozmiary bloków zmniejszają liczbę wywołań procedur alokacji pamięci, ale korzystają z większej liczby zasobów.

Przykład

// Define two lists
CAtlList<int> myList1;
CAtlList<double> myList2;   

CAtlList::~CAtlList

Destruktora.

~CAtlList() throw();

Uwagi

Zwalnia wszystkie przydzielone zasoby, w tym wywołanie listy CAtlList::RemoveAll , aby usunąć wszystkie elementy z listy.

W kompilacjach debugowania wystąpi błąd asercji, jeśli lista nadal zawiera pewne elementy po wywołaniu metody RemoveAll.

CAtlList::Find

Wywołaj tę metodę, aby wyszukać listę dla określonego elementu.

POSITION Find(INARGTYPE element, POSITION posStartAfter = NULL) const throw();

Parametry

Element
Element, który ma zostać znaleziony na liście.

posStartAfter
Pozycja początkowa wyszukiwania. Jeśli żadna wartość nie jest określona, wyszukiwanie rozpoczyna się od elementu head.

Wartość zwracana

Zwraca wartość POSITION elementu, jeśli zostanie znaleziona, w przeciwnym razie zwraca wartość NULL.

Uwagi

W kompilacjach debugowania wystąpi błąd asercji, jeśli obiekt listy jest nieprawidłowy lub jeśli wartość posStartAfter jest poza zakresem.

Przykład

// 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

Wywołaj tę metodę, aby uzyskać pozycję elementu, biorąc pod uwagę wartość indeksu.

POSITION FindIndex(size_t iElement) const throw();

Parametry

Ielement
Indeks zerowy wymaganego elementu listy.

Wartość zwracana

Zwraca odpowiadającą wartość POSITION lub NULL, jeśli element iElement jest poza zakresem.

Uwagi

Ta metoda zwraca wartość POSITION odpowiadającą danej wartości indeksu, umożliwiając dostęp do nelementu na liście.

W kompilacjach debugowania wystąpi błąd asercji, jeśli obiekt listy jest nieprawidłowy.

Przykład

// 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

Wywołaj tę metodę, aby zwrócić element na określonej pozycji na liście.

E& GetAt(POSITION pos) throw();
const E& GetAt(POSITION pos) const throw();

Parametry

Poz
Wartość POSITION określająca określony element.

Wartość zwracana

Odwołanie do elementu lub jego kopia.

Uwagi

Jeśli lista to const, GetAt zwraca kopię elementu. Dzięki temu metoda może być używana tylko po prawej stronie instrukcji przypisania i chroni listę przed modyfikacją.

Jeśli lista nie constma wartości , GetAt zwraca odwołanie do elementu. Dzięki temu metoda może być używana po obu stronach instrukcji przypisania, co umożliwia modyfikację wpisów listy.

W kompilacjach debugowania wystąpi błąd asercji, jeśli wiersze są równe null.

Przykład

Zobacz przykład CAtlList ::FindIndex.

CAtlList::GetCount

Wywołaj tę metodę, aby zwrócić liczbę obiektów na liście.

size_t GetCount() const throw();

Wartość zwracana

Zwraca liczbę elementów na liście.

Przykład

Zobacz przykład CAtlList ::Find.

CAtlList::GetHead

Wywołaj tę metodę, aby zwrócić element na czele listy.

E& GetHead() throw();
const E& GetHead() const throw();

Wartość zwracana

Zwraca odwołanie do elementu na początku listy lub jego kopię.

Uwagi

Jeśli lista to const, GetHead zwraca kopię elementu na czele listy. Dzięki temu metoda może być używana tylko po prawej stronie instrukcji przypisania i chroni listę przed modyfikacją.

Jeśli lista nie constma wartości , GetHead zwraca odwołanie do elementu na czele listy. Dzięki temu metoda może być używana po obu stronach instrukcji przypisania, co umożliwia modyfikację wpisów listy.

W kompilacjach debugowania wystąpi błąd asercji, jeśli nagłówek listy wskazuje wartość NULL.

Przykład

Zobacz przykład CAtlList ::AddHead.

CAtlList::GetHeadPosition

Wywołaj tę metodę, aby uzyskać pozycję głowy listy.

POSITION GetHeadPosition() const throw();

Wartość zwracana

Zwraca wartość POSITION odpowiadającą elementowi na czele listy.

Uwagi

Jeśli lista jest pusta, zwracana wartość ma wartość NULL.

Przykład

// 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

Wywołaj tę metodę, aby zwrócić następny element z listy.

E& GetNext(POSITION& pos) throw();
const E& GetNext(POSITION& pos) const throw();

Parametry

Poz
Wartość POSITION zwrócona przez poprzednie wywołanie metody GetNext, CAtlList::GetHeadPosition lub innej CAtlList metody.

Wartość zwracana

Jeśli lista to const, GetNext zwraca kopię następnego elementu listy. Dzięki temu metoda może być używana tylko po prawej stronie instrukcji przypisania i chroni listę przed modyfikacją.

Jeśli lista nie constma wartości , GetNext zwraca odwołanie do następnego elementu listy. Dzięki temu metoda może być używana po obu stronach instrukcji przypisania, co umożliwia modyfikację wpisów listy.

Uwagi

Licznik POSITION, pos, jest aktualizowany w celu wskazania następnego elementu na liście lub wartości NULL, jeśli nie ma więcej elementów. W kompilacjach debugowania wystąpi błąd asercji, jeśli wiersze są równe null.

Przykład

Zobacz przykład CAtlList::GetHeadPosition.

CAtlList::GetPrev

Wywołaj tę metodę, aby zwrócić poprzedni element z listy.

E& GetPrev(POSITION& pos) throw();
const E& GetPrev(POSITION& pos) const throw();

Parametry

Poz
Wartość POSITION zwrócona przez poprzednie wywołanie metody GetPrev, CAtlList::GetTailPosition lub innej CAtlList metody.

Wartość zwracana

Jeśli lista to const, GetPrev zwraca kopię elementu listy. Dzięki temu metoda może być używana tylko po prawej stronie instrukcji przypisania i chroni listę przed modyfikacją.

Jeśli lista nie constma wartości , GetPrev zwraca odwołanie do elementu listy. Dzięki temu metoda może być używana po obu stronach instrukcji przypisania, co umożliwia modyfikację wpisów listy.

Uwagi

Licznik POSITION, pos, jest aktualizowany w celu wskazania poprzedniego elementu na liście lub wartości NULL, jeśli nie ma więcej elementów. W kompilacjach debugowania wystąpi błąd asercji, jeśli wiersze są równe null.

Przykład

Zobacz przykład CAtlList ::GetTailPosition.

CAtlList::GetTail

Wywołaj tę metodę, aby zwrócić element na ogonie listy.

E& GetTail() throw();
const E& GetTail() const throw();

Wartość zwracana

Zwraca odwołanie do elementu na kącie listy lub jego kopię.

Uwagi

Jeśli lista to const, GetTail zwraca kopię elementu na czele listy. Dzięki temu metoda może być używana tylko po prawej stronie instrukcji przypisania i chroni listę przed modyfikacją.

Jeśli lista nie constma wartości , GetTail zwraca odwołanie do elementu na czele listy. Dzięki temu metoda może być używana po obu stronach instrukcji przypisania, co umożliwia modyfikację wpisów listy.

W kompilacjach debugowania wystąpi błąd asercji, jeśli punkt końcowy listy wskazuje wartość NULL.

Przykład

Zobacz przykład CAtlList::AddTail.

CAtlList::GetTailPosition

Wywołaj tę metodę, aby uzyskać położenie ogona listy.

POSITION GetTailPosition() const throw();

Wartość zwracana

Zwraca wartość POSITION odpowiadającą elementowi na ogonie listy.

Uwagi

Jeśli lista jest pusta, zwracana wartość ma wartość NULL.

Przykład

// 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 używany, gdy element jest przekazywany jako argument wejściowy.

typedef ETraits::INARGTYPE INARGTYPE;

CAtlList::InsertAfter

Wywołaj tę metodę, aby wstawić nowy element do listy po określonej pozycji.

POSITION InsertAfter(POSITION pos, INARGTYPE element);

Parametry

Poz
Wartość POSITION, po której zostanie wstawiony nowy element.

Element
Element do wstawienia.

Wartość zwracana

Zwraca wartość POSITION nowego elementu.

Uwagi

W kompilacjach debugowania wystąpi błąd asercji, jeśli lista nie jest prawidłowa, jeśli wstawianie zakończy się niepowodzeniem lub jeśli zostanie podjęta próba wstawienia elementu po ogonie.

Przykład

// 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

Wywołaj tę metodę, aby wstawić nowy element do listy przed określoną pozycją.

POSITION InsertBefore(POSITION pos, INARGTYPE element);

Parametry

Poz
Nowy element zostanie wstawiony do listy przed tą wartością POSITION.

Element
Element do wstawienia.

Wartość zwracana

Zwraca wartość POSITION nowego elementu.

Uwagi

W kompilacjach debugowania wystąpi błąd asercji, jeśli lista nie jest prawidłowa, jeśli wstawianie zakończy się niepowodzeniem lub jeśli zostanie podjęta próba wstawienia elementu przed głową.

Przykład

// 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

Wywołaj tę metodę, aby określić, czy lista jest pusta.

bool IsEmpty() const throw();

Wartość zwracana

Zwraca wartość true, jeśli lista nie zawiera żadnych obiektów, w przeciwnym razie wartość false.

Przykład

// 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

Wywołaj tę metodę, aby przenieść określony element na głowę listy.

void MoveToHead(POSITION pos) throw();

Parametry

Poz
Wartość POSITION elementu do przeniesienia.

Uwagi

Określony element jest przenoszony z bieżącej pozycji do nagłówka listy. W kompilacjach debugowania wystąpi błąd asercji, jeśli wiersze są równe null.

Przykład

// 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

Wywołaj tę metodę, aby przenieść określony element na koniec listy.

void MoveToTail(POSITION pos) throw();

Parametry

Poz
Wartość POSITION elementu do przeniesienia.

Uwagi

Określony element jest przenoszony z bieżącego położenia do końca listy. W kompilacjach debugowania wystąpi błąd asercji, jeśli wiersze są równe null.

Przykład

Zobacz przykład CAtlList ::MoveToHead.

CAtlList::RemoveAll

Wywołaj tę metodę, aby usunąć wszystkie elementy z listy.

void RemoveAll() throw();

Uwagi

Ta metoda usuwa wszystkie elementy z listy i zwalnia przydzieloną pamięć. W kompilacjach debugowania element ATLASSERT zostanie zgłoszony, jeśli wszystkie elementy nie zostaną usunięte lub struktura listy zostanie uszkodzona.

Przykład

Zobacz przykład CAtlList::IsEmpty.

CAtlList::RemoveAt

Wywołaj tę metodę, aby usunąć pojedynczy element z listy.

void RemoveAt(POSITION pos) throw();

Parametry

Poz
Wartość POSITION elementu do usunięcia.

Uwagi

Element, do których odwołuje się wiersze, jest usuwany, a pamięć jest zwalniana. Dopuszczalne jest usunięcie RemoveAt głowy lub ogona listy.

W kompilacjach debugowania wystąpi błąd asercji, jeśli lista jest nieprawidłowa lub jeśli usunięcie elementu powoduje, że lista uzyskuje dostęp do pamięci, która nie jest częścią struktury listy.

Przykład

// 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

Wywołaj tę metodę, aby usunąć element na czele listy.

E RemoveHead();

Wartość zwracana

Zwraca element na czele listy.

Uwagi

Element head zostanie usunięty z listy, a pamięć zostanie zwolniona. Zwracana jest kopia elementu. W kompilacjach debugowania wystąpi błąd asercji, jeśli lista jest pusta.

Przykład

// 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

Wywołaj tę metodę, aby usunąć element na czele listy bez zwracania wartości.

void RemoveHeadNoReturn() throw();

Uwagi

Element head zostanie usunięty z listy, a pamięć zostanie zwolniona. W kompilacjach debugowania wystąpi błąd asercji, jeśli lista jest pusta.

Przykład

Zobacz przykład CAtlList::IsEmpty.

CAtlList::RemoveTail

Wywołaj tę metodę, aby usunąć element na ogonie listy.

E RemoveTail();

Wartość zwracana

Zwraca element na ogonie listy.

Uwagi

Element końcowy zostanie usunięty z listy, a pamięć zostanie zwolniona. Zwracana jest kopia elementu. W kompilacjach debugowania wystąpi błąd asercji, jeśli lista jest pusta.

Przykład

// 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

Wywołaj tę metodę, aby usunąć element na kącie listy bez zwracania wartości.

void RemoveTailNoReturn() throw();

Uwagi

Element końcowy zostanie usunięty z listy, a pamięć zostanie zwolniona. W kompilacjach debugowania wystąpi błąd asercji, jeśli lista jest pusta.

Przykład

Zobacz przykład CAtlList::IsEmpty.

CAtlList::SetAt

Wywołaj tę metodę, aby ustawić wartość elementu na danej pozycji na liście.

void SetAt(POSITION pos, INARGTYPE element);

Parametry

Poz
Wartość POSITION odpowiadająca elementowi, który ma ulec zmianie.

Element
Nowa wartość elementu.

Uwagi

Zastępuje istniejącą wartość elementem . W kompilacjach debugowania wystąpi błąd asercji, jeśli wiersze są równe null.

Przykład

// 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

Wywołaj tę metodę, aby zamienić elementy na liście.

void SwapElements(POSITION pos1, POSITION pos2) throw();

Parametry

pos1
Pierwsza wartość POZYCJI.

pos2
Druga wartość POZYCJI.

Uwagi

Zamienia elementy na dwóch określonych pozycjach. W kompilacjach debugowania wystąpi błąd asercji, jeśli którakolwiek z wartości pozycji jest równa NULL.

Przykład

// 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);   

Zobacz też

Klasa CList
Omówienie klasy