Sdílet prostřednictvím


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ý.

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

Objekt CObject

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