Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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ý.
CObListIMPLEMENT_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í CObListnaleznete 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 CObjectodvozené 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. GetAtCObject 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 CObListvrá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 , CObListvrá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 GetHeadmusí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 GetNextvoláním funkce , GetHeadPositionnebo 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 GetTailmusí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 GetNextvoláním funkce , GetPrevnebo 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 GetNextvoláním funkce , GetPrevnebo 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 RemoveHeadmusí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 RemoveTailmusí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. SetAtCObject 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