CObList
Třída
Podporuje uspořádané seznamy neunique CObject
ukazatelů, které jsou přístupné postupně nebo podle hodnoty ukazatele.
Syntaxe
class CObList : public CObject
Členové
Veřejné konstruktory
Název | Popis |
---|---|
CObList::CObList |
Vytvoří prázdný seznam pro CObject ukazatele. |
Veřejné metody
Název | Popis |
---|---|
CObList::AddHead |
Přidá prvek (nebo všechny prvky v jiném seznamu) do hlavy seznamu (vytvoří novou hlavu). |
CObList::AddTail |
Přidá prvek (nebo všechny prvky v jiném seznamu) na konec seznamu (vytvoří nový ocas). |
CObList::Find |
Získá pozici prvku určeného hodnotou ukazatele. |
CObList::FindIndex |
Získá pozici prvku určeného indexem založeným na nule. |
CObList::GetAt |
Získá prvek na dané pozici. |
CObList::GetCount |
Vrátí počet prvků v tomto seznamu. |
CObList::GetHead |
Vrátí hlavní prvek seznamu (nemůže být prázdný). |
CObList::GetHeadPosition |
Vrátí pozici hlavního prvku seznamu. |
CObList::GetNext |
Získá další prvek pro iterování. |
CObList::GetPrev |
Získá předchozí prvek pro iterování. |
CObList::GetSize |
Vrátí počet prvků v tomto seznamu. |
CObList::GetTail |
Vrátí koncovou část seznamu (nemůže být prázdný). |
CObList::GetTailPosition |
Vrátí pozici koncového prvku seznamu. |
CObList::InsertAfter |
Vloží nový prvek za danou pozici. |
CObList::InsertBefore |
Vloží nový prvek před danou pozici. |
CObList::IsEmpty |
Testuje prázdnou podmínku seznamu (žádné prvky). |
CObList::RemoveAll |
Odebere všechny prvky z tohoto seznamu. |
CObList::RemoveAt |
Odebere prvek z tohoto seznamu určený pozicí. |
CObList::RemoveHead |
Odebere prvek z hlavy seznamu. |
CObList::RemoveTail |
Odebere prvek z konce seznamu. |
CObList::SetAt |
Nastaví prvek na dané pozici. |
Poznámky
CObList
seznamy se chovají jako seznamy propojené doubly.
Proměnná typu POSITION
je klíčem pro seznam. Proměnnou POSITION
můžete použít jako iterátor k postupnému procházení seznamu i záložky pro uložení místa. Pozice ale není stejná jako index.
Vložení prvku je velmi rychlé v hlavě seznamu, na chvostu a ve známém POSITION
. Sekvenční vyhledávání je nezbytné k vyhledání prvku podle hodnoty nebo indexu. Toto hledání může být pomalé, pokud je seznam dlouhý.
CObList
IMPLEMENT_SERIAL
obsahuje makro pro podporu serializace a dumpingu jeho prvků. Pokud je seznam CObject
ukazatelů uložen do archivu, buď s přetíženým operátorem vložení, nebo s Serialize
členské funkce, je každý CObject
prvek serializován postupně.
Pokud potřebujete výpis jednotlivých CObject
prvků v seznamu, musíte nastavit hloubku kontextu výpisu na hodnotu 1 nebo vyšší.
Při odstranění objektu CObList
nebo při odebrání jeho prvků se odeberou pouze CObject
ukazatele, nikoli objekty, na které odkazují.
Můžete odvodit vlastní třídy z CObList
. Nová třída seznamu navržená tak, aby držela ukazatele na objekty odvozené z CObject
, přidává nové datové členy a nové členské funkce. Všimněte si, že výsledný seznam není zcela bezpečný, protože umožňuje vložení jakéhokoli CObject
ukazatele.
Poznámka:
Makro je nutné použít IMPLEMENT_SERIAL
v implementaci odvozené třídy, pokud máte v úmyslu serializovat seznam.
Další informace o použití CObList
naleznete v článku Kolekce.
Hierarchie dědičnosti
CObList
Požadavky
Záhlaví: afxcoll.h
CObList::AddHead
Přidá nový prvek nebo seznam prvků do hlavy tohoto seznamu.
POSITION AddHead(CObject* newElement);
void AddHead(CObList* pNewList);
Parametry
newElement
Ukazatel CObject
, který se má přidat do tohoto seznamu.
pNewList
Ukazatel na jiný CObList
seznam. Prvky v pNewList
tomto seznamu budou přidány.
Návratová hodnota
První verze vrátí POSITION
hodnotu nově vloženého prvku.
V následující tabulce jsou uvedeny další členské funkce, které jsou podobné CObList::AddHead
.
Třída | Členská funkce |
---|---|
CPtrList |
POSITION AddHead( void * newElement ); void AddHead( CPtrList * pNewList ); |
CStringList |
POSITION AddHead(const CString& newElement ); POSITION AddHead(LPCTSTR newElement ); void AddHead(CStringList * pNewList ); |
Poznámky
Seznam může být před operací prázdný.
Příklad
Podívejte CObList::CObList
se na výpis CAge
třídy.
CObList list;
list.AddHead(new CAge(21)); // 21 is now at head.
list.AddHead(new CAge(40)); // 40 replaces 21 at head.
#ifdef _DEBUG
afxDump.SetDepth(1);
afxDump << _T("AddHead example: ") << &list << _T("\n");
#endif
Výsledky z tohoto programu jsou následující:
AddHead example: A CObList with 2 elements
a CAge at $44A8 40
a CAge at $442A 21
CObList::AddTail
Přidá nový prvek nebo seznam prvků na konec tohoto seznamu.
POSITION AddTail(CObject* newElement);
void AddTail(CObList* pNewList);
Parametry
newElement
Ukazatel CObject
, který se má přidat do tohoto seznamu.
pNewList
Ukazatel na jiný CObList
seznam. Prvky v pNewList
tomto seznamu budou přidány.
Návratová hodnota
První verze vrátí POSITION
hodnotu nově vloženého prvku.
Poznámky
Seznam může být před operací prázdný.
V následující tabulce jsou uvedeny další členské funkce, které jsou podobné CObList::AddTail
.
Třída | Členská funkce |
---|---|
CPtrList |
POSITION AddTail( void * newElement ); void AddTail( CPtrList * pNewList ); |
CStringList |
POSITION AddTail( const CString& newElement ); POSITION AddTail( LPCTSTR newElement ); void AddTail( CStringList * pNewList ); |
Příklad
Podívejte CObList::CObList
se na výpis CAge
třídy.
CObList list;
list.AddTail(new CAge(21));
list.AddTail(new CAge(40)); // List now contains (21, 40).
#ifdef _DEBUG
afxDump.SetDepth(1);
afxDump << _T("AddTail example: ") << &list << _T("\n");
#endif
Výsledky z tohoto programu jsou následující:
AddTail example: A CObList with 2 elements
a CAge at $444A 21
a CAge at $4526 40
CObList::CObList
Vytvoří prázdný CObject
seznam ukazatelů.
CObList(INT_PTR nBlockSize = 10);
Parametry
nBlockSize
Členitost přidělení paměti pro rozšíření seznamu.
Poznámky
S rostoucím seznamem se paměť přiděluje v jednotkách nBlockSize
položek. Pokud přidělení paměti selže, CMemoryException
vyvolá se chyba.
V následující tabulce jsou uvedeny další členské funkce, které jsou podobné CObList::CObList
.
Třída | Členská funkce |
---|---|
CPtrList |
CPtrList( INT_PTR nBlockSize = 10 ); |
CStringList |
CStringList( INT_PTR nBlockSize = 10 ); |
Příklad
Níže je uveden seznam CObject
odvozené třídy CAge
použité ve všech příkladech kolekce:
// Simple CObject-derived class for CObList and other examples
class CAge : public CObject
{
DECLARE_SERIAL(CAge)
private:
int m_years;
public:
CAge() { m_years = 0; }
CAge(int age) { m_years = age; }
CAge(const CAge& a) { m_years = a.m_years; } // Copy constructor
void Serialize(CArchive& ar);
void AssertValid() const;
const CAge& operator=(const CAge& a)
{
m_years = a.m_years; return *this;
}
BOOL operator==(CAge a)
{
return m_years == a.m_years;
}
#ifdef _DEBUG
void Dump(CDumpContext& dc) const
{
CObject::Dump(dc);
dc << m_years;
}
#endif
};
Níže je příklad použití konstruktoru CObList
:
CObList list(20); // List on the stack with blocksize = 20.
CObList* plist = new CObList; // List on the heap with default
// blocksize.
CObList::Find
Prohledá seznam postupně a vyhledá první CObject
ukazatel odpovídající zadanému CObject
ukazateli.
POSITION Find(
CObject* searchValue,
POSITION startAfter = NULL) const;
Parametry
searchValue
Ukazatel objektu, který se má najít v tomto seznamu.
startAfter
Počáteční pozice hledání.
Návratová hodnota
Hodnota POSITION
, kterou lze použít pro iteraci nebo načtení ukazatele objektu; NULL
pokud objekt nebyl nalezen.
Poznámky
Všimněte si, že hodnoty ukazatele se porovnávají, nikoli obsah objektů.
V následující tabulce jsou uvedeny další členské funkce, které jsou podobné CObList::Find
.
Třída | Členská funkce |
---|---|
CPtrList |
POSITION Find( void *searchValue , POSITION startAfter = NULL ) const; |
CStringList |
POSITION Find( LPCTSTR searchValue , POSITION startAfter = NULL ) const; |
Příklad
Podívejte CObList::CObList
se na výpis CAge
třídy.
CObList list;
CAge* pa1;
CAge* pa2;
POSITION pos;
list.AddHead(pa1 = new CAge(21));
list.AddHead(pa2 = new CAge(40)); // List now contains (40, 21).
if ((pos = list.Find(pa1)) != NULL) // Hunt for pa1
{ // starting at head by default.
ASSERT(*(CAge*)list.GetAt(pos) == CAge(21));
}
CObList::FindIndex
Použije hodnotu nIndex
jako index do seznamu.
POSITION FindIndex(INT_PTR nIndex) const;
Parametry
nIndex
Index prvku seznamu založený na nule, který se má najít.
Návratová hodnota
Hodnota POSITION
, kterou lze použít pro iteraci nebo načtení ukazatele objektu, NULL
pokud nIndex
je příliš velká. (Architektura vygeneruje kontrolní výraz, pokud nIndex
je záporný.)
Poznámky
Spustí sekvenční skenování z hlavy seznamu a zastaví se na n-thprvku.
V následující tabulce jsou uvedeny další členské funkce, které jsou podobné CObList::FindIndex
.
Třída | Členská funkce |
---|---|
CPtrList |
POSITION FindIndex( INT_PTR nIndex ) const; |
CStringList |
POSITION FindIndex( INT_PTR nIndex ) const; |
Příklad
Podívejte CObList::CObList
se na výpis CAge
třídy.
CObList list;
POSITION pos;
list.AddHead(new CAge(21));
list.AddHead(new CAge(40)); // List now contains (40, 21).
if ((pos = list.FindIndex(0)) != NULL)
{
ASSERT(*(CAge*)list.GetAt(pos) == CAge(40));
}
CObList::GetAt
Proměnná typu POSITION
je klíčem pro seznam.
CObject*& GetAt(POSITION position);
const CObject*& GetAt(POSITION position) const;
Parametry
position
POSITION
Hodnota vrácená voláním předchozí GetHeadPosition
nebo Find
členské funkce.
Návratová hodnota
Podívejte se na popis návratové hodnoty pro GetHead
.
Poznámky
Není to stejné jako index a nemůžete pracovat s POSITION
hodnotou sami. GetAt
CObject
načte ukazatel přidružený k dané pozici.
Je nutné zajistit, aby hodnota POSITION
představovala platnou pozici v seznamu. Pokud je neplatná, pak ladicí verze knihovny tříd Microsoft Foundation asserts.
V následující tabulce jsou uvedeny další členské funkce, které jsou podobné CObList::GetAt
.
Třída | Členská funkce |
---|---|
CPtrList |
const void*& GetAt( POSITION position ) const; void*& GetAt( POSITION position ); |
CStringList |
const CString& GetAt( POSITION position ) const; CString& GetAt( POSITION position ); |
Příklad
Podívejte se na příklad pro FindIndex
.
CObList::GetCount
Získá počet prvků v tomto seznamu.
INT_PTR GetCount() const;
Návratová hodnota
Celočíselná hodnota obsahující počet prvků.
V následující tabulce jsou uvedeny další členské funkce, které jsou podobné CObList::GetCount
.
Třída | Členská funkce |
---|---|
CPtrList |
INT_PTR GetCount( ) const; |
CStringList |
INT_PTR GetCount( ) const; |
Příklad
Podívejte CObList::CObList
se na výpis CAge
třídy.
CObList list;
list.AddHead(new CAge(21));
list.AddHead(new CAge(40)); // List now contains (40, 21).
ASSERT(list.GetCount() == 2);
CObList::GetHead
CObject
Získá ukazatel, který představuje hlavní prvek tohoto seznamu.
CObject*& GetHead();
const CObject*& GetHead() const;
Návratová hodnota
Pokud je seznam přístupný pomocí ukazatele na , const CObList
vrátí GetHead
CObject
ukazatel. To umožňuje, aby se funkce používala pouze na pravé straně příkazu přiřazení, a proto chrání seznam před úpravami.
Pokud je seznam přístupný přímo nebo prostřednictvím ukazatele na , CObList
vrátí GetHead
odkaz na CObject
ukazatel. To umožňuje, aby se funkce používala na obou stranách příkazu přiřazení, a tím umožňuje úpravu položek seznamu.
Poznámky
Před voláním GetHead
musíte zajistit, aby seznam nebyl prázdný . Pokud je seznam prázdný, pak ladicí verze knihovny tříd Microsoft Foundation se uplatní. Slouží IsEmpty
k ověření, zda seznam obsahuje prvky.
V následující tabulce jsou uvedeny další členské funkce, které jsou podobné CObList::GetHead
.
Třída | Členská funkce |
---|---|
CPtrList |
const void*& GetHead( ) const; void*& GetHead( ); |
CStringList |
const CString& GetHead( ) const; CString& GetHead( ); |
Příklad
Podívejte CObList::CObList
se na výpis CAge
třídy.
Následující příklad ukazuje použití GetHead
na levé straně příkazu přiřazení.
const CObList* cplist;
CObList* plist = new CObList;
CAge* page1 = new CAge(21);
CAge* page2 = new CAge(30);
CAge* page3 = new CAge(40);
plist->AddHead(page1);
plist->AddHead(page2); // List now contains (30, 21).
// The following statement REPLACES the head element.
plist->GetHead() = page3; // List now contains (40, 21).
ASSERT(*(CAge*)plist->GetHead() == CAge(40));
cplist = plist; // cplist is a pointer to a const list.
// cplist->GetHead() = page3; // Error: can't assign a pointer to a const list
ASSERT(*(CAge*)plist->GetHead() == CAge(40)); // OK
delete page1;
delete page2;
delete page3;
delete plist; // Cleans up memory.
CObList::GetHeadPosition
Získá pozici hlavního prvku tohoto seznamu.
POSITION GetHeadPosition() const;
Návratová hodnota
Hodnota POSITION
, kterou lze použít pro iteraci nebo načtení ukazatele objektu; NULL
pokud je seznam prázdný.
V následující tabulce jsou uvedeny další členské funkce, které jsou podobné CObList::GetHeadPosition
.
Třída | Členská funkce |
---|---|
CPtrList |
POSITION GetHeadPosition( ) const; |
CStringList |
POSITION GetHeadPosition( ) const; |
Příklad
Podívejte CObList::CObList
se na výpis CAge
třídy.
CObList list;
POSITION pos;
list.AddHead(new CAge(21));
list.AddHead(new CAge(40)); // List now contains (40, 21).
if ((pos = list.GetHeadPosition()) != NULL)
{
ASSERT(*(CAge*)list.GetAt(pos) == CAge(40));
}
CObList::GetNext
Získá prvek seznamu identifikovaný rPosition
, pak nastaví rPosition
na POSITION
hodnotu další položky v seznamu.
CObject*& GetNext(POSITION& rPosition);
const CObject* GetNext(POSITION& rPosition) const;
Parametry
rPosition
Odkaz na POSITION
hodnotu vrácenou předchozím GetNext
voláním funkce , GetHeadPosition
nebo jiné členské funkce.
Návratová hodnota
Podívejte se na popis návratové hodnoty pro GetHead
.
Poznámky
Můžete použít GetNext
ve smyčce přesměrování iterace, pokud vytvoříte počáteční pozici s voláním GetHeadPosition
nebo Find
.
Je nutné zajistit, aby hodnota POSITION
představovala platnou pozici v seznamu. Pokud je neplatná, pak ladicí verze knihovny tříd Microsoft Foundation asserts.
Pokud je načtený prvek poslední v seznamu, pak je nová hodnota rPosition
nastavena na NULL
.
Během iterace je možné odebrat prvek. Podívejte se na příklad pro RemoveAt
.
Poznámka:
Od mfc 8.0 se změnila verze const této metody tak, aby se vrátila const CObject*
místo const CObject*&
. Tato změna byla provedena tak, aby kompilátor přešel do souladu se standardem C++.
V následující tabulce jsou uvedeny další členské funkce, které jsou podobné CObList::GetNext
.
Třída | Členská funkce |
---|---|
CPtrList |
void*& GetNext( POSITION& rPosition ); const void* GetNext( POSITION& rPosition ) const; |
CStringList |
CString& GetNext( POSITION& rPosition ); const CString& GetNext( POSITION& rPosition ) const; |
Příklad
Podívejte CObList::CObList
se na výpis CAge
třídy.
CObList list;
POSITION pos;
list.AddHead(new CAge(21));
list.AddHead(new CAge(40)); // List now contains (40, 21).
// Iterate through the list in head-to-tail order.
#ifdef _DEBUG
for (pos = list.GetHeadPosition(); pos != NULL;)
{
afxDump << list.GetNext(pos) << _T("\n");
}
#endif
Výsledky z tohoto programu jsou následující:
a CAge at $479C 40
a CAge at $46C0 21
CObList::GetPrev
Získá prvek seznamu identifikovaný rPosition
, pak nastaví rPosition
na POSITION
hodnotu předchozí položky v seznamu.
CObject*& GetPrev(POSITION& rPosition);
const CObject* GetPrev(POSITION& rPosition) const;
Parametry
rPosition
Odkaz na POSITION
hodnotu vrácenou předchozím GetPrev
nebo jiným voláním členské funkce.
Návratová hodnota
Podívejte se na popis návratové hodnoty pro GetHead
.
Poznámky
Můžete použít GetPrev
ve smyčce zpětné iterace, pokud vytvoříte počáteční pozici s voláním GetTailPosition
nebo Find
.
Je nutné zajistit, aby hodnota POSITION
představovala platnou pozici v seznamu. Pokud je neplatná, pak ladicí verze knihovny tříd Microsoft Foundation asserts.
Pokud je načtený prvek první v seznamu, pak je nová hodnota rPosition
nastavena na NULL
.
Poznámka:
Od mfc 8.0 se změnila verze const této metody tak, aby se vrátila const CObject*
místo const CObject*&
. Tato změna byla provedena tak, aby kompilátor přešel do souladu se standardem C++.
V následující tabulce jsou uvedeny další členské funkce, které jsou podobné CObList::GetPrev
.
Třída | Členská funkce |
---|---|
CPtrList |
void*& GetPrev( POSITION& rPosition ); const void* GetPrev( POSITION& rPosition ) const; |
CStringList |
CString& GetPrev( POSITION& rPosition ); const CString& GetPrev( POSITION& rPosition ) const; |
Příklad
Podívejte CObList::CObList
se na výpis CAge
třídy.
CObList list;
POSITION pos;
list.AddHead(new CAge(21));
list.AddHead(new CAge(40)); // List now contains (40, 21).
// Iterate through the list in tail-to-head order.
for (pos = list.GetTailPosition(); pos != NULL;)
{
#ifdef _DEBUG
afxDump << list.GetPrev(pos) << _T("\n");
#endif
}
Výsledky z tohoto programu jsou následující:
a CAge at $421C 21
a CAge at $421C 40
CObList::GetSize
Vrátí počet prvků seznamu.
INT_PTR GetSize() const;
Návratová hodnota
Početpoložekch
Poznámky
Voláním této metody načtěte počet prvků v seznamu.
V následující tabulce jsou uvedeny další členské funkce, které jsou podobné CObList::GetSize
.
Třída | Členská funkce |
---|---|
CPtrList |
INT_PTR GetSize( ) const; |
CStringList |
INT_PTR GetSize( ) const; |
Příklad
Podívejte CObList::CObList
se na výpis CAge
třídy.
CObList list;
list.AddHead(new CAge(21));
list.AddHead(new CAge(40)); // List now contains (40, 21).
ASSERT(list.GetSize() == 2);
CObList::GetTail
CObject
Získá ukazatel, který představuje ocasní prvek tohoto seznamu.
CObject*& GetTail();
const CObject*& GetTail() const;
Návratová hodnota
Podívejte se na popis návratové hodnoty pro GetHead
.
Poznámky
Před voláním GetTail
musíte zajistit, aby seznam nebyl prázdný . Pokud je seznam prázdný, pak ladicí verze knihovny tříd Microsoft Foundation se uplatní. Slouží IsEmpty
k ověření, zda seznam obsahuje prvky.
V následující tabulce jsou uvedeny další členské funkce, které jsou podobné CObList::GetTail
.
Třída | Členská funkce |
---|---|
CPtrList |
const void*& GetTail( ) const; void*& GetTail( ); |
CStringList |
const CString& GetTail( ) const; CString& GetTail( ); |
Příklad
Podívejte CObList::CObList
se na výpis CAge
třídy.
CObList list;
list.AddHead(new CAge(21));
list.AddHead(new CAge(40)); // List now contains (40, 21).
ASSERT(*(CAge*)list.GetTail() == CAge(21));
CObList::GetTailPosition
Získá pozici koncového prvku tohoto seznamu; NULL
pokud je seznam prázdný.
POSITION GetTailPosition() const;
Návratová hodnota
Hodnota POSITION
, kterou lze použít pro iteraci nebo načtení ukazatele objektu; NULL
pokud je seznam prázdný.
V následující tabulce jsou uvedeny další členské funkce, které jsou podobné CObList::GetTailPosition
.
Třída | Členská funkce |
---|---|
CPtrList |
POSITION GetTailPosition( ) const; |
CStringList |
POSITION GetTailPosition( ) const; |
Příklad
Podívejte CObList::CObList
se na výpis CAge
třídy.
CObList list;
POSITION pos;
list.AddHead(new CAge(21));
list.AddHead(new CAge(40)); // List now contains (40, 21).
if ((pos = list.GetTailPosition()) != NULL)
{
ASSERT(*(CAge*) list.GetAt(pos) == CAge(21));
}
CObList::InsertAfter
Přidá prvek do tohoto seznamu za prvek na zadané pozici.
POSITION InsertAfter(
POSITION position,
CObject* newElement);
Parametry
position
POSITION
Hodnota vrácená předchozím GetNext
voláním funkce , GetPrev
nebo Find
členské funkce.
newElement
Ukazatel objektu, který se má přidat do tohoto seznamu.
V následující tabulce jsou uvedeny další členské funkce, které jsou podobné CObList::InsertAfter
.
Třída | Členská funkce |
---|---|
CPtrList |
POSITION InsertAfter( POSITION position , void * newElement ); |
CStringList |
POSITION InsertAfter( POSITION position , const CString& newElement ); POSITION InsertAfter( POSITION position , LPCTSTR newElement ); |
Návratová hodnota
Hodnota POSITION
, která je stejná jako position
parametr.
Příklad
Podívejte CObList::CObList
se na výpis CAge
třídy.
CObList list;
POSITION pos1, pos2;
list.AddHead(new CAge(21));
list.AddHead(new CAge(40)); // List now contains (40, 21).
if ((pos1 = list.GetHeadPosition()) != NULL)
{
pos2 = list.InsertAfter(pos1, new CAge(65));
}
#ifdef _DEBUG
afxDump.SetDepth(1);
afxDump << _T("InsertAfter example: ") << &list << _T("\n");
#endif
Výsledky z tohoto programu jsou následující:
InsertAfter example: A CObList with 3 elements
a CAge at $4A44 40
a CAge at $4A64 65
a CAge at $4968 21
CObList::InsertBefore
Přidá prvek do tohoto seznamu před prvek na zadané pozici.
POSITION InsertBefore(
POSITION position,
CObject* newElement);
Parametry
position
POSITION
Hodnota vrácená předchozím GetNext
voláním funkce , GetPrev
nebo Find
členské funkce.
newElement
Ukazatel objektu, který se má přidat do tohoto seznamu.
Návratová hodnota
Hodnota POSITION
, kterou lze použít pro iteraci nebo načtení ukazatele objektu; NULL
pokud je seznam prázdný.
V následující tabulce jsou uvedeny další členské funkce, které jsou podobné CObList::InsertBefore
.
Třída | Členská funkce |
---|---|
CPtrList |
POSITION InsertBefore( POSITION position , void * newElement ); |
CStringList |
POSITION InsertBefore( POSITION position , const CString& newElement ); POSITION InsertBefore( POSITION position , LPCTSTR newElement ); |
Příklad
Podívejte CObList::CObList
se na výpis CAge
třídy.
CObList list;
POSITION pos1, pos2;
list.AddHead(new CAge(21));
list.AddHead(new CAge(40)); // List now contains (40, 21).
if ((pos1 = list.GetTailPosition()) != NULL)
{
pos2 = list.InsertBefore(pos1, new CAge(65));
}
#ifdef _DEBUG
afxDump.SetDepth(1);
afxDump << _T("InsertBefore example: ") << &list << _T("\n");
#endif
Výsledky z tohoto programu jsou následující:
InsertBefore example: A CObList with 3 elements
a CAge at $4AE2 40
a CAge at $4B02 65
a CAge at $49E6 21
CObList::IsEmpty
Určuje, zda tento seznam neobsahuje žádné prvky.
BOOL IsEmpty() const;
Návratová hodnota
Nenulové, pokud je tento seznam prázdný; jinak 0.
V následující tabulce jsou uvedeny další členské funkce, které jsou podobné CObList::IsEmpty
.
Třída | Členská funkce |
---|---|
CPtrList |
BOOL IsEmpty( ) const; |
CStringList |
BOOL IsEmpty( ) const; |
Příklad
Podívejte se na příklad pro RemoveAll
.
CObList::RemoveAll
Odebere všechny prvky z tohoto seznamu a uvolní přidruženou CObList
paměť.
void RemoveAll();
Poznámky
Pokud je seznam prázdný, nevygeneruje se žádná chyba.
Když odeberete prvky ze seznamu CObList
, odeberete ukazatele na objekt ze seznamu. Je vaší zodpovědností odstranit samotné objekty.
V následující tabulce jsou uvedeny další členské funkce, které jsou podobné CObList::RemoveAll
.
Třída | Členská funkce |
---|---|
CPtrList |
void RemoveAll( ); |
CStringList |
void RemoveAll( ); |
Příklad
Podívejte CObList::CObList
se na výpis CAge
třídy.
CObList list;
CAge* pa1;
CAge* pa2;
ASSERT(list.IsEmpty()); // Yes it is.
list.AddHead(pa1 = new CAge(21));
list.AddHead(pa2 = new CAge(40)); // List now contains (40, 21).
ASSERT(!list.IsEmpty()); // No it isn't.
list.RemoveAll(); // CAges aren't destroyed.
ASSERT(list.IsEmpty()); // Yes it is.
delete pa1; // Now delete the CAge objects.
delete pa2;
CObList::RemoveAt
Odebere zadaný prvek z tohoto seznamu.
void RemoveAt(POSITION position);
Parametry
position
Pozice prvku, který má být odebrán ze seznamu.
Poznámky
Když odeberete prvek z objektu CObList
, odeberete ukazatel objektu ze seznamu. Je vaší zodpovědností odstranit samotné objekty.
Je nutné zajistit, aby hodnota POSITION
představovala platnou pozici v seznamu. Pokud je neplatná, pak ladicí verze knihovny tříd Microsoft Foundation asserts.
V následující tabulce jsou uvedeny další členské funkce, které jsou podobné CObList::RemoveAt
.
Třída | Členská funkce |
---|---|
CPtrList |
void RemoveAt( POSITION position ); |
CStringList |
void RemoveAt( POSITION position ); |
Příklad
Při odebírání prvku během iterace seznamu buďte opatrní. Následující příklad ukazuje techniku odebrání, která zaručuje platnou POSITION
hodnotu pro GetNext
.
Podívejte CObList::CObList
se na výpis CAge
třídy.
CObList list;
POSITION pos1, pos2;
CObject* pa;
list.AddHead(new CAge(21));
list.AddHead(new CAge(40));
list.AddHead(new CAge(65)); // List now contains (65 40, 21).
for (pos1 = list.GetHeadPosition(); (pos2 = pos1) != NULL;)
{
if (*(CAge*)list.GetNext(pos1) == CAge(40))
{
pa = list.GetAt(pos2); // Save the old pointer for
//deletion.
list.RemoveAt(pos2);
delete pa; // Deletion avoids memory leak.
}
}
#ifdef _DEBUG
afxDump.SetDepth(1);
afxDump << _T("RemoveAt example: ") << &list << _T("\n");
#endif
Výsledky z tohoto programu jsou následující:
RemoveAt example: A CObList with 2 elements
a CAge at $4C1E 65
a CAge at $4B22 21
CObList::RemoveHead
Odebere prvek z hlavy seznamu a vrátí ukazatel na něj.
CObject* RemoveHead();
Návratová hodnota
Ukazatel CObject
na začátku seznamu.
Poznámky
Před voláním RemoveHead
musíte zajistit, aby seznam nebyl prázdný . Pokud je seznam prázdný, pak ladicí verze knihovny tříd Microsoft Foundation se uplatní. Slouží IsEmpty
k ověření, zda seznam obsahuje prvky.
V následující tabulce jsou uvedeny další členské funkce, které jsou podobné CObList::RemoveHead
.
Třída | Členská funkce |
---|---|
CPtrList |
void* RemoveHead( ); |
CStringList |
CString RemoveHead( ); |
Příklad
Podívejte CObList::CObList
se na výpis CAge
třídy.
CObList list;
CAge* pa1;
CAge* pa2;
list.AddHead(pa1 = new CAge(21));
list.AddHead(pa2 = new CAge(40)); // List now contains (40, 21).
ASSERT(*(CAge*)list.RemoveHead() == CAge(40)); // Old head
ASSERT(*(CAge*)list.GetHead() == CAge(21)); // New head
delete pa1;
delete pa2;
CObList::RemoveTail
Odebere prvek z konce seznamu a vrátí ukazatel na něj.
CObject* RemoveTail();
Návratová hodnota
Ukazatel na objekt, který byl na konci seznamu.
Poznámky
Před voláním RemoveTail
musíte zajistit, aby seznam nebyl prázdný . Pokud je seznam prázdný, pak ladicí verze knihovny tříd Microsoft Foundation se uplatní. Slouží IsEmpty
k ověření, zda seznam obsahuje prvky.
V následující tabulce jsou uvedeny další členské funkce, které jsou podobné CObList::RemoveTail
.
Třída | Členská funkce |
---|---|
CPtrList |
void* RemoveTail( ); |
CStringList |
CString RemoveTail( ); |
Příklad
Podívejte CObList::CObList
se na výpis CAge
třídy.
CObList list;
CAge* pa1;
CAge* pa2;
list.AddHead(pa1 = new CAge(21));
list.AddHead(pa2 = new CAge(40)); // List now contains (40, 21).
ASSERT(*(CAge*)list.RemoveTail() == CAge(21)); // Old tail
ASSERT(*(CAge*)list.GetTail() == CAge(40)); // New tail
delete pa1;
delete pa2; // Clean up memory.
CObList::SetAt
Nastaví prvek na dané pozici.
void SetAt(
POSITION pos,
CObject* newElement);
Parametry
pos
Prvek POSITION
, který se má nastavit.
newElement
Ukazatel CObject
, který se má zapsat do seznamu.
Poznámky
Proměnná typu POSITION
je klíčem pro seznam. Není to stejné jako index a nemůžete pracovat s POSITION
hodnotou sami. SetAt
CObject
zapíše ukazatel na zadanou pozici v seznamu.
Je nutné zajistit, aby hodnota POSITION
představovala platnou pozici v seznamu. Pokud je neplatná, pak ladicí verze knihovny tříd Microsoft Foundation asserts.
V následující tabulce jsou uvedeny další členské funkce, které jsou podobné CObList::SetAt
.
Třída | Členská funkce |
---|---|
CPtrList |
void SetAt( POSITION pos , const CString& newElement ); |
CStringList |
void SetAt( POSITION pos , LPCTSTR newElement ); |
Příklad
Podívejte CObList::CObList
se na výpis CAge
třídy.
CObList list;
CObject* pa;
POSITION pos;
list.AddHead(new CAge(21));
list.AddHead(new CAge(40)); // List now contains (40, 21).
if ((pos = list.GetTailPosition()) != NULL)
{
pa = list.GetAt(pos); // Save the old pointer for
//deletion.
list.SetAt(pos, new CAge(65)); // Replace the tail
//element.
delete pa; // Deletion avoids memory leak.
}
#ifdef _DEBUG
afxDump.SetDepth(1);
afxDump << _T("SetAt example: ") << &list << _T("\n");
#endif
Výsledky z tohoto programu jsou následující:
SetAt example: A CObList with 2 elements
a CAge at $4D98 40
a CAge at $4DB8 65
Viz také
CObject
Třída
Graf hierarchie
CStringList
Třída
CPtrList
Třída