CAtlList – třída
Tato třída poskytuje metody pro vytváření a správu objektu seznamu.
Syntaxe
template<typename E, class ETraits = CElementTraits<E>>
class CAtlList
Parametry
E
Typ elementu.
ETraits
Kód použitý ke kopírování nebo přesouvání prvků. Další podrobnosti najdete v tématu CElementTraits – třída .
Členové
Veřejné definice typedef
Název | Popis |
---|---|
CAtlList::INARGTYPE |
Veřejné konstruktory
Název | Popis |
---|---|
CAtlList::CAtlList | Konstruktor |
CAtlList::~CAtlList | Destruktor. |
Veřejné metody
Název | Popis |
---|---|
CAtlList::AddHead | Voláním této metody přidáte prvek do hlavy seznamu. |
CAtlList::AddHeadList | Voláním této metody přidáte existující seznam do hlavy seznamu. |
CAtlList::AddTail | Voláním této metody přidáte prvek na konec tohoto seznamu. |
CAtlList::AddTailList | Voláním této metody přidáte existující seznam na konec tohoto seznamu. |
CAtlList::AssertValid | Voláním této metody potvrďte platnost seznamu. |
CAtlList::Find | Voláním této metody vyhledejte v seznamu zadaný prvek. |
CAtlList::FindIndex | Voláním této metody získáte pozici elementu vzhledem k hodnotě indexu. |
CAtlList::GetAt | Voláním této metody vrátíte prvek na zadané pozici v seznamu. |
CAtlList::GetCount | Voláním této metody vrátíte počet objektů v seznamu. |
CAtlList::GetHead | Voláním této metody vrátíte prvek v záhlaví seznamu. |
CAtlList::GetHeadPosition | Voláním této metody získáte pozici hlavy seznamu. |
CAtlList::GetNext | Voláním této metody vrátíte další prvek ze seznamu. |
CAtlList::GetPrev | Voláním této metody vrátíte předchozí prvek ze seznamu. |
CAtlList::GetTail | Voláním této metody vrátíte prvek na konci seznamu. |
CAtlList::GetTailPosition | Voláním této metody získáte pozici konce seznamu. |
CAtlList::InsertAfter | Voláním této metody vložíte nový prvek do seznamu za zadanou pozici. |
CAtlList::InsertBefore | Voláním této metody vložíte nový prvek do seznamu před zadanou pozici. |
CAtlList::IsEmpty | Voláním této metody určíte, zda je seznam prázdný. |
CAtlList::MoveToHead | Voláním této metody přesunete zadaný prvek do hlavy seznamu. |
CAtlList::MoveToTail | Voláním této metody přesunete zadaný prvek na konec seznamu. |
CAtlList::RemoveAll | Voláním této metody odeberete všechny prvky ze seznamu. |
CAtlList::RemoveAt | Voláním této metody odeberete jeden prvek ze seznamu. |
CAtlList::RemoveHead | Voláním této metody odeberete prvek v záhlaví seznamu. |
CAtlList::RemoveHeadNoReturn | Voláním této metody odeberete prvek v záhlaví seznamu bez vrácení hodnoty. |
CAtlList::RemoveTail | Voláním této metody odeberete prvek na konci seznamu. |
CAtlList::RemoveTailNoReturn | Voláním této metody odeberete prvek na konci seznamu bez vrácení hodnoty. |
CAtlList::SetAt | Voláním této metody nastavíte hodnotu prvku na dané pozici v seznamu. |
CAtlList::SwapElements | Voláním této metody prohodíte prvky v seznamu. |
Poznámky
Třída CAtlList
podporuje uspořádané seznamy neunique objektů, které jsou přístupné postupně nebo podle hodnoty. CAtlList
seznamy se chovají jako dobly propojené seznamy. Každý seznam má hlavu a ocas a nové prvky (nebo seznamy v některých případech) lze přidat na konec seznamu nebo vložit před nebo za konkrétní prvky.
CAtlList
Většina metod využívá hodnotu pozice. Tuto hodnotu používají metody k odkazování na skutečné umístění paměti, kde jsou prvky uloženy, a neměly by být vypočítány ani predikovány přímo. Pokud je nutné získat přístup k nth element v seznamu, metoda CAtlList::FindIndex vrátí odpovídající hodnotu pozice pro daný index. Metody CAtlList::GetNext a CAtlList::GetPrev lze použít k iteraci objektů v seznamu.
Další informace o třídách kolekcí dostupných v ATL naleznete v tématu ATL Collection Classes.
Požadavky
Hlavička: atlcoll.h
CAtlList::AddHead
Voláním této metody přidáte prvek do hlavy seznamu.
POSITION AddHead();
POSITION AddHead(INARGTYPE element);
Parametry
element
Nový prvek.
Návratová hodnota
Vrátí pozici nově přidaného prvku.
Poznámky
Pokud se použije první verze, vytvoří se prázdný prvek pomocí výchozího konstruktoru, nikoli pomocí jeho konstruktoru kopírování.
Příklad
// 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
Voláním této metody přidáte existující seznam do hlavy seznamu.
void AddHeadList(const CAtlList<E, ETraits>* plNew);
Parametry
PlNew
Seznam, který se má přidat.
Poznámky
Seznam, na který odkazuje plNew , se vloží na začátek existujícího seznamu. V buildech ladění dojde k selhání kontrolního výrazu, pokud se plNew rovná hodnotě NULL.
Příklad
// 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
Voláním této metody přidáte prvek na konec tohoto seznamu.
POSITION AddTail();
POSITION AddTail(INARGTYPE element);
Parametry
element
Prvek, který chcete přidat.
Návratová hodnota
Vrátí pozici nově přidaného prvku.
Poznámky
Pokud se použije první verze, vytvoří se prázdný prvek pomocí výchozího konstruktoru, nikoli pomocí jeho konstruktoru kopírování. Prvek se přidá na konec seznamu, takže se nyní stane ocasem. Tuto metodu lze použít s prázdným seznamem.
Příklad
// 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
Voláním této metody přidáte existující seznam na konec tohoto seznamu.
void AddTailList(const CAtlList<E, ETraits>* plNew);
Parametry
PlNew
Seznam, který se má přidat.
Poznámky
Seznam odkazovaný na plNew se vloží za poslední prvek (pokud existuje) v objektu list. Poslední prvek v seznamu plNew se proto stane ocasem. V buildech ladění dojde k selhání kontrolního výrazu, pokud se plNew rovná hodnotě NULL.
Příklad
// 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
Voláním této metody potvrďte platnost seznamu.
void AssertValid() const;
Poznámky
V sestaveních ladění dojde k selhání kontrolního výrazu, pokud objekt seznamu není platný. Aby byl prázdný seznam platný, musí mít záhlaví i ocas směřující na hodnotu NULL a seznam, který není prázdný, musí obsahovat hlavičku i koncovou adresu na platné adresy.
Příklad
// 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
Velikost bloku.
Poznámky
Konstruktor objektu CAtlList
. Velikost bloku je míra množství paměti přidělené v případě, že je vyžadován nový prvek. Větší velikosti bloků snižují počet volání rutin přidělení paměti, ale využívají více prostředků.
Příklad
// Define two lists
CAtlList<int> myList1;
CAtlList<double> myList2;
CAtlList::~CAtlList
Destruktor.
~CAtlList() throw();
Poznámky
Uvolní všechny přidělené prostředky, včetně volání CAtlList::RemoveAll pro odebrání všech prvků ze seznamu.
Při ladění sestavení dojde k selhání kontrolního výrazu, pokud seznam stále obsahuje některé prvky po volání RemoveAll
.
CAtlList::Find
Voláním této metody vyhledejte v seznamu zadaný prvek.
POSITION Find(INARGTYPE element, POSITION posStartAfter = NULL) const throw();
Parametry
element
Prvek, který se má najít v seznamu.
posStartAfter
Počáteční pozice hledání. Pokud není zadána žádná hodnota, hledání začíná hlavním prvkem.
Návratová hodnota
Vrátí hodnotu POSITION prvku, pokud je nalezen, v opačném případě vrátí hodnotu NULL.
Poznámky
V sestaveních ladění dojde k selhání kontrolního výrazu, pokud objekt seznamu není platný nebo pokud hodnota posStartAfter je mimo rozsah.
Příklad
// 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
Voláním této metody získáte pozici elementu vzhledem k hodnotě indexu.
POSITION FindIndex(size_t iElement) const throw();
Parametry
iElement
Index seznamu založený na nule požadovaného prvku seznamu.
Návratová hodnota
Vrátí odpovídající hodnotu POSITION nebo NULL, pokud je parametr iElement mimo rozsah.
Poznámky
Tato metoda vrátí pozici odpovídající dané hodnotě indexu, což umožňuje přístup k n-témuprvku v seznamu.
V sestaveních ladění dojde k selhání kontrolního výrazu, pokud objekt seznamu není platný.
Příklad
// 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
Voláním této metody vrátíte prvek na zadané pozici v seznamu.
E& GetAt(POSITION pos) throw();
const E& GetAt(POSITION pos) const throw();
Parametry
Pos
Hodnota POSITION určující určitý prvek.
Návratová hodnota
Odkaz na prvek nebo jeho kopii.
Poznámky
Pokud je const
seznam , GetAt
vrátí kopii prvku. To umožňuje použít metodu pouze na pravé straně příkazu přiřazení a chrání seznam před úpravami.
Pokud seznam není const
, GetAt
vrátí odkaz na prvek. To umožňuje použít metodu na obou stranách příkazu přiřazení, a tak umožňuje upravit položky seznamu.
V sestaveních ladění dojde k selhání kontrolního výrazu, pokud se pos rovná hodnotě NULL.
Příklad
Podívejte se na příklad pro CAtlList::FindIndex.
CAtlList::GetCount
Voláním této metody vrátíte počet objektů v seznamu.
size_t GetCount() const throw();
Návratová hodnota
Vrátí počet prvků v seznamu.
Příklad
Podívejte se na příklad pro CAtlList::Find.
CAtlList::GetHead
Voláním této metody vrátíte prvek v záhlaví seznamu.
E& GetHead() throw();
const E& GetHead() const throw();
Návratová hodnota
Vrátí odkaz na prvek v záhlaví seznamu nebo jeho kopii.
Poznámky
Pokud je const
seznam , GetHead
vrátí kopii prvku v záhlaví seznamu. To umožňuje použít metodu pouze na pravé straně příkazu přiřazení a chrání seznam před úpravami.
Pokud seznam není const
, GetHead
vrátí odkaz na prvek v záhlaví seznamu. To umožňuje použít metodu na obou stranách příkazu přiřazení, a tak umožňuje upravit položky seznamu.
V sestaveních ladění dojde k selhání kontrolního výrazu, pokud hlava seznamu odkazuje na hodnotu NULL.
Příklad
Podívejte se na příklad pro CAtlList::AddHead.
CAtlList::GetHeadPosition
Voláním této metody získáte pozici hlavy seznamu.
POSITION GetHeadPosition() const throw();
Návratová hodnota
Vrátí hodnotu POSITION odpovídající prvku v záhlaví seznamu.
Poznámky
Pokud je seznam prázdný, vrátí se hodnota NULL.
Příklad
// 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
Voláním této metody vrátíte další prvek ze seznamu.
E& GetNext(POSITION& pos) throw();
const E& GetNext(POSITION& pos) const throw();
Parametry
Pos
Hodnota POSITION vrácená předchozím voláním GetNext
, CAtlList::GetHeadPosition nebo jinou CAtlList
metodou.
Návratová hodnota
Pokud je const
seznam , GetNext
vrátí kopii dalšího prvku seznamu. To umožňuje použít metodu pouze na pravé straně příkazu přiřazení a chrání seznam před úpravami.
Pokud seznam není const
, GetNext
vrátí odkaz na další prvek seznamu. To umožňuje použít metodu na obou stranách příkazu přiřazení, a tak umožňuje upravit položky seznamu.
Poznámky
Čítač POSITION, pos, je aktualizován tak, aby odkaz na další prvek v seznamu nebo NULL, pokud neexistují žádné další prvky. V sestaveních ladění dojde k selhání kontrolního výrazu, pokud se pos rovná hodnotě NULL.
Příklad
Podívejte se na příklad pro CAtlList::GetHeadPosition.
CAtlList::GetPrev
Voláním této metody vrátíte předchozí prvek ze seznamu.
E& GetPrev(POSITION& pos) throw();
const E& GetPrev(POSITION& pos) const throw();
Parametry
Pos
Hodnota POSITION vrácená předchozím voláním GetPrev
, CAtlList::GetTailPosition nebo jinou CAtlList
metodou.
Návratová hodnota
Pokud je const
seznam , GetPrev
vrátí kopii prvku seznamu. To umožňuje použít metodu pouze na pravé straně příkazu přiřazení a chrání seznam před úpravami.
Pokud seznam není const
, GetPrev
vrátí odkaz na prvek seznamu. To umožňuje použít metodu na obou stranách příkazu přiřazení, a tak umožňuje upravit položky seznamu.
Poznámky
Čítač POSITION, pos, se aktualizuje tak, aby odkaz na předchozí prvek v seznamu nebo NULL, pokud neexistují žádné další prvky. V sestaveních ladění dojde k selhání kontrolního výrazu, pokud se pos rovná hodnotě NULL.
Příklad
Podívejte se na příklad pro CAtlList::GetTailPosition.
CAtlList::GetTail
Voláním této metody vrátíte prvek na konci seznamu.
E& GetTail() throw();
const E& GetTail() const throw();
Návratová hodnota
Vrátí odkaz na prvek v chvostu seznamu nebo jeho kopii.
Poznámky
Pokud je const
seznam , GetTail
vrátí kopii prvku v záhlaví seznamu. To umožňuje použít metodu pouze na pravé straně příkazu přiřazení a chrání seznam před úpravami.
Pokud seznam není const
, GetTail
vrátí odkaz na prvek v záhlaví seznamu. To umožňuje použít metodu na obou stranách příkazu přiřazení, a tak umožňuje upravit položky seznamu.
V sestaveních ladění dojde k selhání kontrolního výrazu, pokud konec seznamu odkazuje na hodnotu NULL.
Příklad
Podívejte se na příklad pro CAtlList::AddTail.
CAtlList::GetTailPosition
Voláním této metody získáte pozici konce seznamu.
POSITION GetTailPosition() const throw();
Návratová hodnota
Vrátí hodnotu POSITION odpovídající prvku na konci seznamu.
Poznámky
Pokud je seznam prázdný, vrátí se hodnota NULL.
Příklad
// 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 použitý při předání elementu jako vstupní argument.
typedef ETraits::INARGTYPE INARGTYPE;
CAtlList::InsertAfter
Voláním této metody vložíte nový prvek do seznamu za zadanou pozici.
POSITION InsertAfter(POSITION pos, INARGTYPE element);
Parametry
Pos
Hodnota POSITION, za kterou bude vložen nový prvek.
element
Prvek, který se má vložit.
Návratová hodnota
Vrátí hodnotu POSITION nového prvku.
Poznámky
V sestaveních ladění dojde k selhání kontrolního výrazu, pokud seznam není platný, pokud vložení selže nebo pokud se pokusí vložit prvek za ocas.
Příklad
// 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
Voláním této metody vložíte nový prvek do seznamu před zadanou pozici.
POSITION InsertBefore(POSITION pos, INARGTYPE element);
Parametry
Pos
Nový prvek se vloží do seznamu před tuto hodnotu POSITION.
element
Prvek, který se má vložit.
Návratová hodnota
Vrátí hodnotu POSITION nového prvku.
Poznámky
V sestaveních ladění dojde k selhání kontrolního výrazu, pokud seznam není platný, pokud vložení selže nebo pokud se pokusí vložit prvek před hlavu.
Příklad
// 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
Voláním této metody určíte, zda je seznam prázdný.
bool IsEmpty() const throw();
Návratová hodnota
Vrátí hodnotu true, pokud seznam neobsahuje žádné objekty, jinak false.
Příklad
// 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
Voláním této metody přesunete zadaný prvek do hlavy seznamu.
void MoveToHead(POSITION pos) throw();
Parametry
Pos
Hodnota POSITION prvku, který chcete přesunout.
Poznámky
Zadaný prvek se přesune z aktuální pozice do hlavy seznamu. V sestaveních ladění dojde k selhání kontrolního výrazu, pokud se pos rovná hodnotě NULL.
Příklad
// 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
Voláním této metody přesunete zadaný prvek na konec seznamu.
void MoveToTail(POSITION pos) throw();
Parametry
Pos
Hodnota POSITION prvku, který chcete přesunout.
Poznámky
Zadaný prvek se přesune z aktuální pozice na konec seznamu. V sestaveních ladění dojde k selhání kontrolního výrazu, pokud se pos rovná hodnotě NULL.
Příklad
Podívejte se na příklad pro CAtlList::MoveToHead.
CAtlList::RemoveAll
Voláním této metody odeberete všechny prvky ze seznamu.
void RemoveAll() throw();
Poznámky
Tato metoda odebere všechny prvky ze seznamu a uvolní přidělenou paměť. V sestaveních ladění bude vyvolána funkce ATLASSERT, pokud se neodstraní všechny prvky nebo dojde k poškození struktury seznamu.
Příklad
Podívejte se na příklad pro CAtlList::IsEmpty.
CAtlList::RemoveAt
Voláním této metody odeberete jeden prvek ze seznamu.
void RemoveAt(POSITION pos) throw();
Parametry
Pos
Hodnota POSITION prvku, který chcete odebrat.
Poznámky
Prvek, na který odkazuje pos , se odebere a paměť se uvolní. Je přijatelné použít RemoveAt
k odebrání hlavy nebo ocasu seznamu.
V sestavení ladění dojde k selhání kontrolního výrazu, pokud seznam není platný nebo pokud odebrání prvku způsobí, že seznam získá přístup k paměti, která není součástí struktury seznamu.
Příklad
// 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
Voláním této metody odeberete prvek v záhlaví seznamu.
E RemoveHead();
Návratová hodnota
Vrátí prvek v záhlaví seznamu.
Poznámky
Hlavní prvek se ze seznamu odstraní a paměť se uvolní. Vrátí se kopie elementu. V sestaveních ladění dojde k selhání kontrolního výrazu, pokud je seznam prázdný.
Příklad
// 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
Voláním této metody odeberete prvek v záhlaví seznamu bez vrácení hodnoty.
void RemoveHeadNoReturn() throw();
Poznámky
Hlavní prvek se ze seznamu odstraní a paměť se uvolní. V sestaveních ladění dojde k selhání kontrolního výrazu, pokud je seznam prázdný.
Příklad
Podívejte se na příklad pro CAtlList::IsEmpty.
CAtlList::RemoveTail
Voláním této metody odeberete prvek na konci seznamu.
E RemoveTail();
Návratová hodnota
Vrátí prvek na konci seznamu.
Poznámky
Tail element se ze seznamu odstraní a paměť se uvolní. Vrátí se kopie elementu. V sestaveních ladění dojde k selhání kontrolního výrazu, pokud je seznam prázdný.
Příklad
// 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
Voláním této metody odeberete prvek na konci seznamu bez vrácení hodnoty.
void RemoveTailNoReturn() throw();
Poznámky
Tail element se ze seznamu odstraní a paměť se uvolní. V sestaveních ladění dojde k selhání kontrolního výrazu, pokud je seznam prázdný.
Příklad
Podívejte se na příklad pro CAtlList::IsEmpty.
CAtlList::SetAt
Voláním této metody nastavíte hodnotu prvku na dané pozici v seznamu.
void SetAt(POSITION pos, INARGTYPE element);
Parametry
Pos
Hodnota POSITION odpovídající prvku, který chcete změnit.
element
Hodnota nového prvku.
Poznámky
Nahradí existující hodnotu elementem. V sestaveních ladění dojde k selhání kontrolního výrazu, pokud se pos rovná hodnotě NULL.
Příklad
// 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
Voláním této metody prohodíte prvky v seznamu.
void SwapElements(POSITION pos1, POSITION pos2) throw();
Parametry
pos1
První hodnota POZICE.
pos2
Druhá hodnota POZICE.
Poznámky
Prohodí prvky na zadaných dvou pozicích. V sestaveních ladění dojde k selhání kontrolního výrazu, pokud je hodnota pozice rovna hodnotě NULL.
Příklad
// 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);