Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Megjegyzés:
A Microsoft Foundation Classes (MFC) könyvtár továbbra is támogatott. A továbbiakban azonban nem adunk hozzá funkciókat, és nem frissítjük a dokumentációt.
Támogatja a sorrendbe rendezett listákat, CObject amelyek egymás után vagy mutatóérték alapján érhetők el.
Szemantika
class CObList : public CObject
Tagok
Nyilvános konstruktorok
| Név | Description |
|---|---|
CObList::CObList |
Üres listát hoz létre a mutatók számára CObject . |
Nyilvános metódusok
| Név | Description |
|---|---|
CObList::AddHead |
Hozzáad egy elemet (vagy egy másik lista összes elemét) a lista éléhez (új fejet hoz létre). |
CObList::AddTail |
Hozzáad egy elemet (vagy egy másik lista összes elemét) a lista farkához (új farkát készít). |
CObList::Find |
Lekéri a mutatóérték által megadott elem pozícióját. |
CObList::FindIndex |
Lekéri egy nulla alapú index által megadott elem pozícióját. |
CObList::GetAt |
Az elemet egy adott pozícióba helyezi. |
CObList::GetCount |
A lista elemeinek számát adja vissza. |
CObList::GetHead |
A lista fő elemét adja vissza (nem lehet üres). |
CObList::GetHeadPosition |
A lista fő elemének pozícióját adja vissza. |
CObList::GetNext |
Lekéri az iterálás következő elemét. |
CObList::GetPrev |
Lekéri az előző elemet az iteráláshoz. |
CObList::GetSize |
A lista elemeinek számát adja vissza. |
CObList::GetTail |
A lista farokelemét adja vissza (nem lehet üres). |
CObList::GetTailPosition |
A lista farokelemének pozícióját adja vissza. |
CObList::InsertAfter |
Új elemet szúr be egy adott pozíció után. |
CObList::InsertBefore |
Új elemet szúr be egy adott pozíció elé. |
CObList::IsEmpty |
Az üres listafeltétel (elemek nélkül) tesztelése. |
CObList::RemoveAll |
Eltávolítja a listából az összes elemet. |
CObList::RemoveAt |
Eltávolít egy elemet a listából, amelyet a pozíció határoz meg. |
CObList::RemoveHead |
Eltávolítja az elemet a lista éléről. |
CObList::RemoveTail |
Eltávolítja az elemet a lista farkából. |
CObList::SetAt |
Az elemet egy adott pozícióba állítja. |
Megjegyzések
CObList a listák a duplázott listákhoz hasonlóan működnek.
A típusváltozó POSITION a lista kulcsa. A változók POSITION iterátorként is használhatók a listák egymás utáni, illetve könyvjelzőként történő bejárására egy hely tárolásához. A pozíció azonban nem ugyanaz, mint az index.
Az elem beszúrása nagyon gyors a listafejnél, a faroknál és egy ismertnél POSITION. Egy elem érték vagy index szerinti kereséséhez szekvenciális keresésre van szükség. Ez a keresés lassú lehet, ha a lista hosszú.
CObList a makrót beépíti az IMPLEMENT_SERIAL elemek szerializálásának és memóriaképének támogatására. Ha a mutatók listája CObject egy archívumban van tárolva, akár túlterhelt beszúrási operátorral, akár a Serialize tagfüggvénnyel, az egyes CObject elemek egymás után szerializálva lesznek.
Ha a lista egyes CObject elemeiből álló memóriaképre van szüksége, a memóriakép-környezet mélységét 1 vagy nagyobbra kell állítania.
CObList Egy objektum törlésekor vagy elemeinek eltávolításakor a rendszer csak a CObject mutatókat távolítja el, a hivatkozott objektumokat nem.
Saját osztályokat is létrehozhat.CObList Az új listaosztály, amely úgy lett kialakítva, hogy a származtatott objektumokra mutató mutatókat tartson, új adattagokat és új tagfüggvényeket ad CObjecthozzá. Vegye figyelembe, hogy az eredményül kapott lista nem szigorúan biztonságos, mert lehetővé teszi a CObject mutató beszúrását.
Megjegyzés:
Ha szerializálni szeretné a listát, a IMPLEMENT_SERIAL makrót a származtatott osztály implementációjában kell használnia.
A használatról CObListtovábbi információt a Gyűjtemények című cikkben talál.
Öröklési hierarchia
CObList
Requirements
Fejléc:afxcoll.h
CObList::AddHead
Új elemet vagy elemlistát ad hozzá a lista éléhez.
POSITION AddHead(CObject* newElement);
void AddHead(CObList* pNewList);
Paraméterek
newElement
A CObject listához hozzáadni kívánt mutató.
pNewList
Egy másik CObList listára mutató mutató. A program hozzáadja a benne lévő pNewList elemeket ehhez a listához.
Visszaadott érték
Az első verzió az POSITION újonnan beszúrt elem értékét adja vissza.
Az alábbi táblázat a többi tagfüggvényt mutatja be, amelyek hasonlóak a következőhöz CObList::AddHead:
| Class | Tagfüggvény |
|---|---|
CPtrList |
POSITION AddHead( void * newElement );void AddHead( CPtrList * pNewList ); |
CStringList |
POSITION AddHead(const CString& newElement );POSITION AddHead(LPCTSTR newElement );void AddHead(CStringList * pNewList ); |
Megjegyzések
A lista a művelet előtt üres lehet.
Example
Tekintse meg CObList::CObList az CAge osztály listáját.
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
A program eredményei a következők:
AddHead example: A CObList with 2 elements
a CAge at $44A8 40
a CAge at $442A 21
CObList::AddTail
Új elemet vagy elemlistát ad hozzá a lista széléhez.
POSITION AddTail(CObject* newElement);
void AddTail(CObList* pNewList);
Paraméterek
newElement
A CObject listához hozzáadni kívánt mutató.
pNewList
Egy másik CObList listára mutató mutató. A program hozzáadja a benne lévő pNewList elemeket ehhez a listához.
Visszaadott érték
Az első verzió az POSITION újonnan beszúrt elem értékét adja vissza.
Megjegyzések
A lista a művelet előtt üres lehet.
Az alábbi táblázat a többi tagfüggvényt mutatja be, amelyek hasonlóak a következőhöz CObList::AddTail:
| Class | Tagfüggvény |
|---|---|
CPtrList |
POSITION AddTail( void * newElement );void AddTail( CPtrList * pNewList ); |
CStringList |
POSITION AddTail( const CString& newElement );POSITION AddTail( LPCTSTR newElement );void AddTail( CStringList * pNewList ); |
Example
Tekintse meg CObList::CObList az CAge osztály listáját.
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
A program eredményei a következők:
AddTail example: A CObList with 2 elements
a CAge at $444A 21
a CAge at $4526 40
CObList::CObList
Üres CObject mutatólistát hoz létre.
CObList(INT_PTR nBlockSize = 10);
Paraméterek
nBlockSize
A lista kiterjesztésének memóriafoglalási részletessége.
Megjegyzések
A lista növekedésével a rendszer a memóriát bejegyzésegységekben nBlockSize foglalja le. Ha a memóriafoglalás sikertelen, CMemoryException a művelet a hibát jelzi.
Az alábbi táblázat a többi tagfüggvényt mutatja be, amelyek hasonlóak a következőhöz CObList::CObList:
| Class | Tagfüggvény |
|---|---|
CPtrList |
CPtrList( INT_PTR nBlockSize = 10 ); |
CStringList |
CStringList( INT_PTR nBlockSize = 10 ); |
Example
Az alábbiakban felsoroljuk az CObjectösszes gyűjteményi példában használt -származtatott osztályt CAge :
// 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
};
Az alábbiakban egy példa a CObList konstruktor használatára:
CObList list(20); // List on the stack with blocksize = 20.
CObList* plist = new CObList; // List on the heap with default
// blocksize.
CObList::Find
A lista egymást követő keresésével megkeresi a megadott CObject mutatónak megfelelő első CObject mutatót.
POSITION Find(
CObject* searchValue,
POSITION startAfter = NULL) const;
Paraméterek
searchValue
A listában található objektummutató.
startAfter
A keresés kezdőpozíciója.
Visszaadott érték
Iterációhoz POSITION vagy objektummutató lekéréséhez használható érték, NULL ha az objektum nem található.
Megjegyzések
Vegye figyelembe, hogy a mutató értékeit a rendszer összehasonlítja, nem az objektumok tartalmát.
Az alábbi táblázat a többi tagfüggvényt mutatja be, amelyek hasonlóak a következőhöz CObList::Find:
| Class | Tagfüggvény |
|---|---|
CPtrList |
POSITION Find( void *searchValue , POSITION startAfter = NULL ) const; |
CStringList |
POSITION Find( LPCTSTR searchValue , POSITION startAfter = NULL ) const; |
Example
Tekintse meg CObList::CObList az CAge osztály listáját.
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
A lista indexeként használja az értéket nIndex .
POSITION FindIndex(INT_PTR nIndex) const;
Paraméterek
nIndex
A keresendő listaelem nulla alapú indexe.
Visszaadott érték
Iterációhoz POSITION vagy objektummutató lekéréséhez használható érték, NULL ha nIndex túl nagy. (A keretrendszer negatív állítást nIndex hoz létre.)
Megjegyzések
Elindít egy szekvenciális vizsgálatot a lista éléről, és megáll az nth elemen.
Az alábbi táblázat a többi tagfüggvényt mutatja be, amelyek hasonlóak a következőhöz CObList::FindIndex:
| Class | Tagfüggvény |
|---|---|
CPtrList |
POSITION FindIndex( INT_PTR nIndex ) const; |
CStringList |
POSITION FindIndex( INT_PTR nIndex ) const; |
Example
Tekintse meg CObList::CObList az CAge osztály listáját.
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
A típusváltozó POSITION a lista kulcsa.
CObject*& GetAt(POSITION position);
const CObject*& GetAt(POSITION position) const;
Paraméterek
position
Egy POSITION korábbi GetHeadPosition vagy Find tagfüggvény-hívás által visszaadott érték.
Visszaadott érték
Lásd a visszatérési érték leírását GetHead.
Megjegyzések
Ez nem ugyanaz, mint egy index, és nem lehet saját maga működtetni egy POSITION értéket.
GetAt lekéri az CObject adott pozícióhoz társított mutatót.
Győződjön meg arról, hogy az POSITION érték érvényes pozíciót jelöl a listában. Ha érvénytelen, akkor a Microsoft Foundation osztálytár hibakeresési verziója érvényes.
Az alábbi táblázat a többi tagfüggvényt mutatja be, amelyek hasonlóak a következőhöz CObList::GetAt:
| Class | Tagfüggvény |
|---|---|
CPtrList |
const void*& GetAt( POSITION position ) const;void*& GetAt( POSITION position ); |
CStringList |
const CString& GetAt( POSITION position ) const;CString& GetAt( POSITION position ); |
Example
Lásd a példát a FindIndex.
CObList::GetCount
Lekéri a lista elemeinek számát.
INT_PTR GetCount() const;
Visszaadott érték
Az elemszámot tartalmazó egész szám.
Az alábbi táblázat a többi tagfüggvényt mutatja be, amelyek hasonlóak a következőhöz CObList::GetCount:
| Class | Tagfüggvény |
|---|---|
CPtrList |
INT_PTR GetCount( ) const; |
CStringList |
INT_PTR GetCount( ) const; |
Example
Tekintse meg CObList::CObList az CAge osztály listáját.
CObList list;
list.AddHead(new CAge(21));
list.AddHead(new CAge(40)); // List now contains (40, 21).
ASSERT(list.GetCount() == 2);
CObList::GetHead
Lekéri a CObject lista fejelemét ábrázoló mutatót.
CObject*& GetHead();
const CObject*& GetHead() const;
Visszaadott érték
Ha a lista egy adott mutatón const CObListkeresztül érhető el, akkor GetHead egy mutatót CObject ad vissza. Így a függvény csak a hozzárendelési utasítás jobb oldalán használható, így védi a listát a módosítástól.
Ha a lista közvetlenül vagy mutatón keresztül CObListérhető el, akkor GetHead egy mutatóra CObject mutató hivatkozást ad vissza. Ez lehetővé teszi a függvény használatát a hozzárendelési utasítás mindkét oldalán, így lehetővé teszi a listabejegyzések módosítását.
Megjegyzések
A hívás GetHeadelőtt győződjön meg arról, hogy a lista nem üres. Ha a lista üres, akkor a Microsoft Foundation osztálytár hibakeresési verziója érvényes. Annak ellenőrzésére használható IsEmpty , hogy a lista tartalmaz-e elemeket.
Az alábbi táblázat a többi tagfüggvényt mutatja be, amelyek hasonlóak a következőhöz CObList::GetHead:
| Class | Tagfüggvény |
|---|---|
CPtrList |
const void*& GetHead( ) const; void*& GetHead( ); |
CStringList |
const CString& GetHead( ) const; CString& GetHead( ); |
Example
Tekintse meg CObList::CObList az CAge osztály listáját.
Az alábbi példa egy hozzárendelési GetHead utasítás bal oldalán történő használatát szemlélteti.
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
Lekéri a lista fő elemének pozícióját.
POSITION GetHeadPosition() const;
Visszaadott érték
Iterációhoz POSITION vagy objektummutató lekéréséhez használható érték, NULL ha a lista üres.
Az alábbi táblázat a többi tagfüggvényt mutatja be, amelyek hasonlóak a következőhöz CObList::GetHeadPosition:
| Class | Tagfüggvény |
|---|---|
CPtrList |
POSITION GetHeadPosition( ) const; |
CStringList |
POSITION GetHeadPosition( ) const; |
Example
Tekintse meg CObList::CObList az CAge osztály listáját.
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
Lekéri az általa rPositionazonosított listaelemet, majd a POSITION lista következő bejegyzésének értékére állítja rPosition be.
CObject*& GetNext(POSITION& rPosition);
const CObject* GetNext(POSITION& rPosition) const;
Paraméterek
rPosition
Hivatkozás egy POSITION előző GetNext, GetHeadPositionvagy más tagfüggvény-hívás által visszaadott értékre.
Visszaadott érték
Lásd a visszatérési érték leírását GetHead.
Megjegyzések
A továbbítási iterációs ciklusban akkor használható GetNext , ha a kezdeti pozíciót egy vagy több hívással GetHeadPositionFindhozza létre.
Győződjön meg arról, hogy az POSITION érték érvényes pozíciót jelöl a listában. Ha érvénytelen, akkor a Microsoft Foundation osztálytár hibakeresési verziója érvényes.
Ha a lekért elem az utolsó a listában, akkor az új érték rPosition a következőre NULLvan állítva: .
Az iteráció során el lehet távolítani egy elemet. Lásd a példát a RemoveAt.
Megjegyzés:
Az MFC 8.0-s verziójától a metódus const verziója ahelyettconst CObject*&, hogy visszaváltconst CObject*. Ezt a módosítást úgy hajtották végre, hogy a fordító megfeleljen a C++ szabványnak.
Az alábbi táblázat a többi tagfüggvényt mutatja be, amelyek hasonlóak a következőhöz CObList::GetNext:
| Class | Tagfüggvény |
|---|---|
CPtrList |
void*& GetNext( POSITION&
rPosition
);
const void* GetNext( POSITION&
rPosition
) const;
|
CStringList |
CString& GetNext( POSITION&
rPosition
);
const CString& GetNext( POSITION&
rPosition
) const;
|
Example
Tekintse meg CObList::CObList az CAge osztály listáját.
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
A program eredményei a következők:
a CAge at $479C 40
a CAge at $46C0 21
CObList::GetPrev
Lekéri az általa rPositionazonosított listaelemet, majd a POSITION lista előző bejegyzésének értékére állítja rPosition be.
CObject*& GetPrev(POSITION& rPosition);
const CObject* GetPrev(POSITION& rPosition) const;
Paraméterek
rPosition
Hivatkozás egy POSITION korábbi GetPrev vagy más tagfüggvény-hívás által visszaadott értékre.
Visszaadott érték
Lásd a visszatérési érték leírását GetHead.
Megjegyzések
Fordított iterációs ciklusban akkor használható GetPrev , ha a kezdeti pozíciót egy vagy több hívással GetTailPositionFindhozza létre.
Győződjön meg arról, hogy az POSITION érték érvényes pozíciót jelöl a listában. Ha érvénytelen, akkor a Microsoft Foundation osztálytár hibakeresési verziója érvényes.
Ha a lekért elem az első a listában, akkor az új érték rPosition a következőre NULLvan állítva: .
Megjegyzés:
Az MFC 8.0-s verziójától a metódus const verziója ahelyettconst CObject*&, hogy visszaváltconst CObject*. Ezt a módosítást úgy hajtották végre, hogy a fordító megfeleljen a C++ szabványnak.
Az alábbi táblázat a többi tagfüggvényt mutatja be, amelyek hasonlóak a következőhöz CObList::GetPrev:
| Class | Tagfüggvény |
|---|---|
CPtrList |
void*& GetPrev( POSITION&
rPosition
);
const void* GetPrev( POSITION&
rPosition
) const;
|
CStringList |
CString& GetPrev( POSITION&
rPosition
);
const CString& GetPrev( POSITION&
rPosition
) const;
|
Example
Tekintse meg CObList::CObList az CAge osztály listáját.
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
}
A program eredményei a következők:
a CAge at $421C 21
a CAge at $421C 40
CObList::GetSize
A listaelemek számát adja vissza.
INT_PTR GetSize() const;
Visszaadott érték
A lista elemeinek száma.
Megjegyzések
Hívja meg ezt a metódust a lista elemeinek számának lekéréséhez.
Az alábbi táblázat a többi tagfüggvényt mutatja be, amelyek hasonlóak a következőhöz CObList::GetSize:
| Class | Tagfüggvény |
|---|---|
CPtrList |
INT_PTR GetSize( ) const; |
CStringList |
INT_PTR GetSize( ) const; |
Example
Tekintse meg CObList::CObList az CAge osztály listáját.
CObList list;
list.AddHead(new CAge(21));
list.AddHead(new CAge(40)); // List now contains (40, 21).
ASSERT(list.GetSize() == 2);
CObList::GetTail
Lekéri a CObject lista farokelemét ábrázoló mutatót.
CObject*& GetTail();
const CObject*& GetTail() const;
Visszaadott érték
Lásd a visszatérési érték leírását GetHead.
Megjegyzések
A hívás GetTailelőtt győződjön meg arról, hogy a lista nem üres. Ha a lista üres, akkor a Microsoft Foundation osztálytár hibakeresési verziója érvényes. Annak ellenőrzésére használható IsEmpty , hogy a lista tartalmaz-e elemeket.
Az alábbi táblázat a többi tagfüggvényt mutatja be, amelyek hasonlóak a következőhöz CObList::GetTail:
| Class | Tagfüggvény |
|---|---|
CPtrList |
const void*& GetTail( ) const; void*& GetTail( ); |
CStringList |
const CString& GetTail( ) const; CString& GetTail( ); |
Example
Tekintse meg CObList::CObList az CAge osztály listáját.
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
Lekéri a lista farokelemének pozícióját; NULL ha a lista üres.
POSITION GetTailPosition() const;
Visszaadott érték
Iterációhoz POSITION vagy objektummutató lekéréséhez használható érték, NULL ha a lista üres.
Az alábbi táblázat a többi tagfüggvényt mutatja be, amelyek hasonlóak a következőhöz CObList::GetTailPosition:
| Class | Tagfüggvény |
|---|---|
CPtrList |
POSITION GetTailPosition( ) const; |
CStringList |
POSITION GetTailPosition( ) const; |
Example
Tekintse meg CObList::CObList az CAge osztály listáját.
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
Hozzáad egy elemet a listához a megadott pozícióban lévő elem után.
POSITION InsertAfter(
POSITION position,
CObject* newElement);
Paraméterek
position
Egy POSITION korábbi GetNext, GetPrevvagy Find tagfüggvény-hívás által visszaadott érték.
newElement
A listához hozzáadni kívánt objektummutató.
Az alábbi táblázat a többi tagfüggvényt mutatja be, amelyek hasonlóak a következőhöz CObList::InsertAfter:
| Class | Tagfüggvény |
|---|---|
CPtrList |
POSITION InsertAfter( POSITION position , void * newElement ); |
CStringList |
POSITION InsertAfter( POSITION position , const CString& newElement );POSITION InsertAfter( POSITION position , LPCTSTR newElement ); |
Visszaadott érték
A POSITION paraméterrel position megegyező érték.
Example
Tekintse meg CObList::CObList az CAge osztály listáját.
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
A program eredményei a következők:
InsertAfter example: A CObList with 3 elements
a CAge at $4A44 40
a CAge at $4A64 65
a CAge at $4968 21
CObList::InsertBefore
Hozzáad egy elemet a listához a megadott pozícióban lévő elem előtt.
POSITION InsertBefore(
POSITION position,
CObject* newElement);
Paraméterek
position
Egy POSITION korábbi GetNext, GetPrevvagy Find tagfüggvény-hívás által visszaadott érték.
newElement
A listához hozzáadni kívánt objektummutató.
Visszaadott érték
Iterációhoz POSITION vagy objektummutató lekéréséhez használható érték, NULL ha a lista üres.
Az alábbi táblázat a többi tagfüggvényt mutatja be, amelyek hasonlóak a következőhöz CObList::InsertBefore:
| Class | Tagfüggvény |
|---|---|
CPtrList |
POSITION InsertBefore( POSITION position , void * newElement ); |
CStringList |
POSITION InsertBefore( POSITION position , const CString& newElement );POSITION InsertBefore( POSITION position , LPCTSTR newElement ); |
Example
Tekintse meg CObList::CObList az CAge osztály listáját.
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
A program eredményei a következők:
InsertBefore example: A CObList with 3 elements
a CAge at $4AE2 40
a CAge at $4B02 65
a CAge at $49E6 21
CObList::IsEmpty
Azt jelzi, hogy a lista nem tartalmaz-e elemeket.
BOOL IsEmpty() const;
Visszaadott érték
Nonzero, ha ez a lista üres; egyéb esetben 0.
Az alábbi táblázat a többi tagfüggvényt mutatja be, amelyek hasonlóak a következőhöz CObList::IsEmpty:
| Class | Tagfüggvény |
|---|---|
CPtrList |
BOOL IsEmpty( ) const; |
CStringList |
BOOL IsEmpty( ) const; |
Example
Lásd a példát a RemoveAll.
CObList::RemoveAll
Eltávolítja a listából az összes elemet, és felszabadítja a társított CObList memóriát.
void RemoveAll();
Megjegyzések
Nem jön létre hiba, ha a lista már üres.
Elemek eltávolításakor CObListeltávolítja az objektummutatókat a listából. Az Ön felelőssége, hogy maguk töröljék az objektumokat.
Az alábbi táblázat a többi tagfüggvényt mutatja be, amelyek hasonlóak a következőhöz CObList::RemoveAll:
| Class | Tagfüggvény |
|---|---|
CPtrList |
void RemoveAll( ); |
CStringList |
void RemoveAll( ); |
Example
Tekintse meg CObList::CObList az CAge osztály listáját.
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
Eltávolítja a megadott elemet a listából.
void RemoveAt(POSITION position);
Paraméterek
position
A listából eltávolítandó elem helye.
Megjegyzések
Amikor eltávolít egy elemet egy CObListelemből, eltávolítja az objektummutatót a listából. Az Ön felelőssége, hogy maguk töröljék az objektumokat.
Győződjön meg arról, hogy az POSITION érték érvényes pozíciót jelöl a listában. Ha érvénytelen, akkor a Microsoft Foundation osztálytár hibakeresési verziója érvényes.
Az alábbi táblázat a többi tagfüggvényt mutatja be, amelyek hasonlóak a következőhöz CObList::RemoveAt:
| Class | Tagfüggvény |
|---|---|
CPtrList |
void RemoveAt( POSITION position ); |
CStringList |
void RemoveAt( POSITION position ); |
Example
Legyen óvatos, amikor eltávolít egy elemet egy lista iterációja során. Az alábbi példa egy olyan eltávolítási POSITION technikát mutat be, amely érvényes értéket garantál a következőhöz GetNext: .
Tekintse meg CObList::CObList az CAge osztály listáját.
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
A program eredményei a következők:
RemoveAt example: A CObList with 2 elements
a CAge at $4C1E 65
a CAge at $4B22 21
CObList::RemoveHead
Eltávolítja az elemet a lista éléről, és egy mutatót ad vissza.
CObject* RemoveHead();
Visszaadott érték
Az CObject egérmutató korábban a lista élén.
Megjegyzések
A hívás RemoveHeadelőtt győződjön meg arról, hogy a lista nem üres. Ha a lista üres, akkor a Microsoft Foundation osztálytár hibakeresési verziója érvényes. Annak ellenőrzésére használható IsEmpty , hogy a lista tartalmaz-e elemeket.
Az alábbi táblázat a többi tagfüggvényt mutatja be, amelyek hasonlóak a következőhöz CObList::RemoveHead:
| Class | Tagfüggvény |
|---|---|
CPtrList |
void* RemoveHead( ); |
CStringList |
CString RemoveHead( ); |
Example
Tekintse meg CObList::CObList az CAge osztály listáját.
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
Eltávolítja az elemet a lista farkából, és egy mutatót ad vissza.
CObject* RemoveTail();
Visszaadott érték
A lista végén lévő objektumra mutató mutató.
Megjegyzések
A hívás RemoveTailelőtt győződjön meg arról, hogy a lista nem üres. Ha a lista üres, akkor a Microsoft Foundation osztálytár hibakeresési verziója érvényes. Annak ellenőrzésére használható IsEmpty , hogy a lista tartalmaz-e elemeket.
Az alábbi táblázat a többi tagfüggvényt mutatja be, amelyek hasonlóak a következőhöz CObList::RemoveTail:
| Class | Tagfüggvény |
|---|---|
CPtrList |
void* RemoveTail( ); |
CStringList |
CString RemoveTail( ); |
Example
Tekintse meg CObList::CObList az CAge osztály listáját.
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
Az elemet egy adott pozícióba állítja.
void SetAt(
POSITION pos,
CObject* newElement);
Paraméterek
pos
A POSITION beállítani kívánt elem.
newElement
A CObject listára írandó mutató.
Megjegyzések
A típusváltozó POSITION a lista kulcsa. Ez nem ugyanaz, mint egy index, és nem lehet saját maga működtetni egy POSITION értéket.
SetAt A mutatót a CObject listában megadott helyre írja.
Győződjön meg arról, hogy az POSITION érték érvényes pozíciót jelöl a listában. Ha érvénytelen, akkor a Microsoft Foundation osztálytár hibakeresési verziója érvényes.
Az alábbi táblázat a többi tagfüggvényt mutatja be, amelyek hasonlóak a következőhöz CObList::SetAt:
| Class | Tagfüggvény |
|---|---|
CPtrList |
void SetAt( POSITION pos , const CString& newElement ); |
CStringList |
void SetAt( POSITION pos , LPCTSTR newElement ); |
Example
Tekintse meg CObList::CObList az CAge osztály listáját.
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
A program eredményei a következők:
SetAt example: A CObList with 2 elements
a CAge at $4D98 40
a CAge at $4DB8 65
Lásd még
CObject osztály
hierarchiadiagram
CStringList osztály
CPtrList osztály