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.
Elementy członkowskie
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
pierwiastek
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
pierwiastek
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
pierwiastek
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
Element i
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
pozytyw
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 const
ma 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 const
ma 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
pozytyw
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 const
ma 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
pozytyw
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 const
ma 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 const
ma 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
pozytyw
Wartość POSITION, po której zostanie wstawiony nowy element.
pierwiastek
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
pozytyw
Nowy element zostanie wstawiony do listy przed tą wartością POSITION.
pierwiastek
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
pozytyw
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
pozytyw
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
pozytyw
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
pozytyw
Wartość POSITION odpowiadająca elementowi, który ma ulec zmianie.
pierwiastek
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);