Classe CObList
Supporta elenchi ordinati di puntatori non univoci CObject
accessibili in sequenza o in base al valore del puntatore.
Sintassi
class CObList : public CObject
Membri
Costruttori pubblici
Nome | Descrizione |
---|---|
CObList::CObList |
Costruisce un elenco vuoto per CObject i puntatori. |
Metodi pubblici
Nome | Descrizione |
---|---|
CObList::AddHead |
Aggiunge un elemento (o tutti gli elementi di un altro elenco) all'inizio dell'elenco (crea una nuova testa). |
CObList::AddTail |
Aggiunge un elemento (o tutti gli elementi di un altro elenco) alla parte finale dell'elenco (crea una nuova coda). |
CObList::Find |
Ottiene la posizione di un elemento specificato dal valore del puntatore. |
CObList::FindIndex |
Ottiene la posizione di un elemento specificato da un indice in base zero. |
CObList::GetAt |
Ottiene l'elemento in corrispondenza di una determinata posizione. |
CObList::GetCount |
Restituisce il numero di elementi nell'elenco. |
CObList::GetHead |
Restituisce l'elemento head dell'elenco (non può essere vuoto). |
CObList::GetHeadPosition |
Restituisce la posizione dell'elemento head dell'elenco. |
CObList::GetNext |
Ottiene l'elemento successivo per l'iterazione. |
CObList::GetPrev |
Ottiene l'elemento precedente per l'iterazione. |
CObList::GetSize |
Restituisce il numero di elementi nell'elenco. |
CObList::GetTail |
Restituisce l'elemento finale dell'elenco (non può essere vuoto). |
CObList::GetTailPosition |
Restituisce la posizione dell'elemento finale dell'elenco. |
CObList::InsertAfter |
Inserisce un nuovo elemento dopo una determinata posizione. |
CObList::InsertBefore |
Inserisce un nuovo elemento prima di una determinata posizione. |
CObList::IsEmpty |
Verifica la condizione di elenco vuota (nessun elemento). |
CObList::RemoveAll |
Rimuove tutti gli elementi dall'elenco. |
CObList::RemoveAt |
Rimuove un elemento da questo elenco, specificato dalla posizione. |
CObList::RemoveHead |
Rimuove l'elemento dall'inizio dell'elenco. |
CObList::RemoveTail |
Rimuove l'elemento dalla parte finale dell'elenco. |
CObList::SetAt |
Imposta l'elemento in una determinata posizione. |
Osservazioni:
CObList
gli elenchi si comportano come elenchi collegati doubly.
Una variabile di tipo POSITION
è una chiave per l'elenco. È possibile usare una POSITION
variabile sia come iteratore per attraversare un elenco in sequenza che come segnalibro per contenere una posizione. Una posizione non corrisponde tuttavia a un indice.
L'inserimento degli elementi è molto veloce all'inizio dell'elenco, alla coda e a un oggetto noto POSITION
. Una ricerca sequenziale è necessaria per cercare un elemento in base al valore o all'indice. Questa ricerca può essere lenta se l'elenco è lungo.
CObList
incorpora la macro IMPLEMENT_SERIAL
per supportare la serializzazione e il dump dei relativi elementi. Se un elenco di CObject
puntatori viene archiviato in un archivio, con un operatore di inserimento di overload o con la Serialize
funzione membro, ogni CObject
elemento viene serializzato a sua volta.
Se è necessario un dump di singoli CObject
elementi nell'elenco, è necessario impostare la profondità del contesto di dump su 1 o versione successiva.
Quando un CObList
oggetto viene eliminato o quando i relativi elementi vengono rimossi, vengono rimossi solo i CObject
puntatori, non gli oggetti a cui fanno riferimento.
È possibile derivare classi personalizzate da CObList
. La nuova classe di elenco, progettata per contenere puntatori a oggetti derivati da CObject
, aggiunge nuovi membri dati e nuove funzioni membro. Si noti che l'elenco risultante non è strettamente indipendente dai tipi, perché consente l'inserimento di qualsiasi CObject
puntatore.
Nota
Se si intende serializzare l'elenco, è necessario utilizzare la IMPLEMENT_SERIAL
macro nell'implementazione della classe derivata.
Per altre informazioni sull'uso CObList
di , vedere l'articolo Raccolte.
Gerarchia di ereditarietà
CObList
Requisiti
Intestazione: afxcoll.h
CObList::AddHead
Aggiunge un nuovo elemento o un elenco di elementi all'inizio di questo elenco.
POSITION AddHead(CObject* newElement);
void AddHead(CObList* pNewList);
Parametri
newElement
Puntatore CObject
da aggiungere a questo elenco.
pNewList
Puntatore a un altro CObList
elenco. Gli elementi in pNewList
verranno aggiunti a questo elenco.
Valore restituito
La prima versione restituisce il POSITION
valore dell'elemento appena inserito.
Nella tabella seguente vengono illustrate altre funzioni membro simili a CObList::AddHead
.
Classe | Funzione membro |
---|---|
CPtrList |
POSITION AddHead( void * newElement ); void AddHead( CPtrList * pNewList ); |
CStringList |
POSITION AddHead(const CString& newElement ); POSITION AddHead(LPCTSTR newElement ); void AddHead(CStringList * pNewList ); |
Osservazioni:
L'elenco può essere vuoto prima dell'operazione.
Esempio
Vedere CObList::CObList
per un elenco della CAge
classe.
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
I risultati di questo programma sono i seguenti:
AddHead example: A CObList with 2 elements
a CAge at $44A8 40
a CAge at $442A 21
CObList::AddTail
Aggiunge un nuovo elemento o un elenco di elementi alla fine dell'elenco.
POSITION AddTail(CObject* newElement);
void AddTail(CObList* pNewList);
Parametri
newElement
Puntatore CObject
da aggiungere a questo elenco.
pNewList
Puntatore a un altro CObList
elenco. Gli elementi in pNewList
verranno aggiunti a questo elenco.
Valore restituito
La prima versione restituisce il POSITION
valore dell'elemento appena inserito.
Osservazioni:
L'elenco può essere vuoto prima dell'operazione.
Nella tabella seguente vengono illustrate altre funzioni membro simili a CObList::AddTail
.
Classe | Funzione membro |
---|---|
CPtrList |
POSITION AddTail( void * newElement ); void AddTail( CPtrList * pNewList ); |
CStringList |
POSITION AddTail( const CString& newElement ); POSITION AddTail( LPCTSTR newElement ); void AddTail( CStringList * pNewList ); |
Esempio
Vedere CObList::CObList
per un elenco della CAge
classe.
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
I risultati di questo programma sono i seguenti:
AddTail example: A CObList with 2 elements
a CAge at $444A 21
a CAge at $4526 40
CObList::CObList
Costruisce un elenco di puntatori vuoto CObject
.
CObList(INT_PTR nBlockSize = 10);
Parametri
nBlockSize
Granularità dell'allocazione di memoria per estendere l'elenco.
Osservazioni:
Man mano che l'elenco aumenta, la memoria viene allocata in unità di nBlockSize
voci. Se un'allocazione di memoria non riesce, viene generata un'eccezione CMemoryException
.
Nella tabella seguente vengono illustrate altre funzioni membro simili a CObList::CObList
.
Classe | Funzione membro |
---|---|
CPtrList |
CPtrList( INT_PTR nBlockSize = 10 ); |
CStringList |
CStringList( INT_PTR nBlockSize = 10 ); |
Esempio
Di seguito è riportato un elenco della CObject
classe CAge
derivata da usata in tutti gli esempi di raccolta:
// 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
};
Di seguito è riportato un esempio di utilizzo del CObList
costruttore:
CObList list(20); // List on the stack with blocksize = 20.
CObList* plist = new CObList; // List on the heap with default
// blocksize.
CObList::Find
Cerca nell'elenco in sequenza per trovare il primo CObject
puntatore corrispondente al puntatore specificato CObject
.
POSITION Find(
CObject* searchValue,
POSITION startAfter = NULL) const;
Parametri
searchValue
Puntatore all'oggetto da trovare in questo elenco.
startAfter
Posizione iniziale per la ricerca.
Valore restituito
Valore POSITION
che può essere utilizzato per il recupero dell'iterazione o del puntatore a oggetti; NULL
se l'oggetto non viene trovato.
Osservazioni:
Si noti che i valori del puntatore vengono confrontati, non il contenuto degli oggetti .
Nella tabella seguente vengono illustrate altre funzioni membro simili a CObList::Find
.
Classe | Funzione membro |
---|---|
CPtrList |
POSITION Find( void *searchValue , POSITION startAfter = NULL ) const; |
CStringList |
POSITION Find( LPCTSTR searchValue , POSITION startAfter = NULL ) const; |
Esempio
Vedere CObList::CObList
per un elenco della CAge
classe.
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
Usa il valore di nIndex
come indice nell'elenco.
POSITION FindIndex(INT_PTR nIndex) const;
Parametri
nIndex
Indice in base zero dell'elemento elenco da trovare.
Valore restituito
Valore POSITION
che può essere utilizzato per il recupero dell'iterazione o del puntatore a oggetti; NULL
se nIndex
è troppo grande. Il framework genera un'asserzione se nIndex
è negativa.
Osservazioni:
Avvia un'analisi sequenziale dall'inizio dell'elenco, fermandosi sull'n elemento.
Nella tabella seguente vengono illustrate altre funzioni membro simili a CObList::FindIndex
.
Classe | Funzione membro |
---|---|
CPtrList |
POSITION FindIndex( INT_PTR nIndex ) const; |
CStringList |
POSITION FindIndex( INT_PTR nIndex ) const; |
Esempio
Vedere CObList::CObList
per un elenco della CAge
classe.
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
Una variabile di tipo POSITION
è una chiave per l'elenco.
CObject*& GetAt(POSITION position);
const CObject*& GetAt(POSITION position) const;
Parametri
position
Valore POSITION
restituito da una chiamata di funzione precedente GetHeadPosition
o Find
membro.
Valore restituito
Vedere la descrizione del valore restituito per GetHead
.
Osservazioni:
Non è uguale a un indice e non è possibile operare manualmente su un POSITION
valore. GetAt
recupera il CObject
puntatore associato a una determinata posizione.
È necessario assicurarsi che il POSITION
valore rappresenti una posizione valida nell'elenco. Se non è valido, la versione debug della libreria di classi Microsoft Foundation asserisce.
Nella tabella seguente vengono illustrate altre funzioni membro simili a CObList::GetAt
.
Classe | Funzione membro |
---|---|
CPtrList |
const void*& GetAt( POSITION position ) const; void*& GetAt( POSITION position ); |
CStringList |
const CString& GetAt( POSITION position ) const; CString& GetAt( POSITION position ); |
Esempio
Vedere l'esempio per FindIndex
.
CObList::GetCount
Ottiene il numero di elementi nell'elenco.
INT_PTR GetCount() const;
Valore restituito
Valore intero contenente il conteggio degli elementi.
Nella tabella seguente vengono illustrate altre funzioni membro simili a CObList::GetCount
.
Classe | Funzione membro |
---|---|
CPtrList |
INT_PTR GetCount( ) const; |
CStringList |
INT_PTR GetCount( ) const; |
Esempio
Vedere CObList::CObList
per un elenco della CAge
classe.
CObList list;
list.AddHead(new CAge(21));
list.AddHead(new CAge(40)); // List now contains (40, 21).
ASSERT(list.GetCount() == 2);
CObList::GetHead
Ottiene il CObject
puntatore che rappresenta l'elemento head di questo elenco.
CObject*& GetHead();
const CObject*& GetHead() const;
Valore restituito
Se l'elenco è accessibile tramite un puntatore a un const CObList
oggetto , GetHead
restituisce un CObject
puntatore. In questo modo la funzione può essere usata solo sul lato destro di un'istruzione di assegnazione e quindi protegge l'elenco dalla modifica.
Se l'elenco è accessibile direttamente o tramite un puntatore a un CObList
oggetto , GetHead
restituisce un riferimento a un CObject
puntatore. Ciò consente di usare la funzione su entrambi i lati di un'istruzione di assegnazione e di conseguenza consente di modificare le voci di elenco.
Osservazioni:
È necessario assicurarsi che l'elenco non sia vuoto prima di chiamare GetHead
. Se l'elenco è vuoto, la versione debug della libreria di classi Microsoft Foundation asserisce. Utilizzare IsEmpty
per verificare che l'elenco contenga elementi.
Nella tabella seguente vengono illustrate altre funzioni membro simili a CObList::GetHead
.
Classe | Funzione membro |
---|---|
CPtrList |
const void*& GetHead( ) const; void*& GetHead( ); |
CStringList |
const CString& GetHead( ) const; CString& GetHead( ); |
Esempio
Vedere CObList::CObList
per un elenco della CAge
classe.
Nell'esempio seguente viene illustrato l'uso di GetHead
sul lato sinistro di un'istruzione di assegnazione.
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
Ottiene la posizione dell'elemento head dell'elenco.
POSITION GetHeadPosition() const;
Valore restituito
Valore POSITION
che può essere utilizzato per il recupero dell'iterazione o del puntatore a oggetti; NULL
se l'elenco è vuoto.
Nella tabella seguente vengono illustrate altre funzioni membro simili a CObList::GetHeadPosition
.
Classe | Funzione membro |
---|---|
CPtrList |
POSITION GetHeadPosition( ) const; |
CStringList |
POSITION GetHeadPosition( ) const; |
Esempio
Vedere CObList::CObList
per un elenco della CAge
classe.
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
Ottiene l'elemento elenco identificato da rPosition
, quindi imposta rPosition
sul POSITION
valore della voce successiva nell'elenco.
CObject*& GetNext(POSITION& rPosition);
const CObject* GetNext(POSITION& rPosition) const;
Parametri
rPosition
Riferimento a un POSITION
valore restituito da una precedente GetNext
chiamata di funzione membro , GetHeadPosition
o .
Valore restituito
Vedere la descrizione del valore restituito per GetHead
.
Osservazioni:
È possibile usare GetNext
in un ciclo di iterazione in avanti se si stabilisce la posizione iniziale con una chiamata a GetHeadPosition
o Find
.
È necessario assicurarsi che il POSITION
valore rappresenti una posizione valida nell'elenco. Se non è valido, la versione debug della libreria di classi Microsoft Foundation asserisce.
Se l'elemento recuperato è l'ultimo nell'elenco, il nuovo valore di rPosition
viene impostato su NULL
.
È possibile rimuovere un elemento durante un'iterazione. Vedere l'esempio per RemoveAt
.
Nota
A partire da MFC 8.0 la versione const di questo metodo è stata modificata in modo da restituire const CObject*
anziché const CObject*&
. Questa modifica è stata apportata per rendere il compilatore conforme allo standard C++.
Nella tabella seguente vengono illustrate altre funzioni membro simili a CObList::GetNext
.
Classe | Funzione membro |
---|---|
CPtrList |
void*& GetNext( POSITION& rPosition ); const void* GetNext( POSITION& rPosition ) const; |
CStringList |
CString& GetNext( POSITION& rPosition ); const CString& GetNext( POSITION& rPosition ) const; |
Esempio
Vedere CObList::CObList
per un elenco della CAge
classe.
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
I risultati di questo programma sono i seguenti:
a CAge at $479C 40
a CAge at $46C0 21
CObList::GetPrev
Ottiene l'elemento elenco identificato da rPosition
, quindi imposta rPosition
sul POSITION
valore della voce precedente nell'elenco.
CObject*& GetPrev(POSITION& rPosition);
const CObject* GetPrev(POSITION& rPosition) const;
Parametri
rPosition
Riferimento a un POSITION
valore restituito da una chiamata di funzione precedente GetPrev
o di altro membro.
Valore restituito
Vedere la descrizione del valore restituito per GetHead
.
Osservazioni:
È possibile usare GetPrev
in un ciclo di iterazione inversa se si stabilisce la posizione iniziale con una chiamata a GetTailPosition
o Find
.
È necessario assicurarsi che il POSITION
valore rappresenti una posizione valida nell'elenco. Se non è valido, la versione debug della libreria di classi Microsoft Foundation asserisce.
Se l'elemento recuperato è il primo nell'elenco, il nuovo valore di rPosition
viene impostato su NULL
.
Nota
A partire da MFC 8.0 la versione const di questo metodo è stata modificata in modo da restituire const CObject*
anziché const CObject*&
. Questa modifica è stata apportata per rendere il compilatore conforme allo standard C++.
Nella tabella seguente vengono illustrate altre funzioni membro simili a CObList::GetPrev
.
Classe | Funzione membro |
---|---|
CPtrList |
void*& GetPrev( POSITION& rPosition ); const void* GetPrev( POSITION& rPosition ) const; |
CStringList |
CString& GetPrev( POSITION& rPosition ); const CString& GetPrev( POSITION& rPosition ) const; |
Esempio
Vedere CObList::CObList
per un elenco della CAge
classe.
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
}
I risultati di questo programma sono i seguenti:
a CAge at $421C 21
a CAge at $421C 40
CObList::GetSize
Restituisce il numero di elementi elenco.
INT_PTR GetSize() const;
Valore restituito
Numero di elementi nell'elenco.
Osservazioni:
Chiamare questo metodo per recuperare il numero di elementi nell'elenco.
Nella tabella seguente vengono illustrate altre funzioni membro simili a CObList::GetSize
.
Classe | Funzione membro |
---|---|
CPtrList |
INT_PTR GetSize( ) const; |
CStringList |
INT_PTR GetSize( ) const; |
Esempio
Vedere CObList::CObList
per un elenco della CAge
classe.
CObList list;
list.AddHead(new CAge(21));
list.AddHead(new CAge(40)); // List now contains (40, 21).
ASSERT(list.GetSize() == 2);
CObList::GetTail
Ottiene il CObject
puntatore che rappresenta l'elemento finale dell'elenco.
CObject*& GetTail();
const CObject*& GetTail() const;
Valore restituito
Vedere la descrizione del valore restituito per GetHead
.
Osservazioni:
È necessario assicurarsi che l'elenco non sia vuoto prima di chiamare GetTail
. Se l'elenco è vuoto, la versione debug della libreria di classi Microsoft Foundation asserisce. Utilizzare IsEmpty
per verificare che l'elenco contenga elementi.
Nella tabella seguente vengono illustrate altre funzioni membro simili a CObList::GetTail
.
Classe | Funzione membro |
---|---|
CPtrList |
const void*& GetTail( ) const; void*& GetTail( ); |
CStringList |
const CString& GetTail( ) const; CString& GetTail( ); |
Esempio
Vedere CObList::CObList
per un elenco della CAge
classe.
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
Ottiene la posizione dell'elemento finale dell'elenco; NULL
se l'elenco è vuoto.
POSITION GetTailPosition() const;
Valore restituito
Valore POSITION
che può essere utilizzato per il recupero dell'iterazione o del puntatore a oggetti; NULL
se l'elenco è vuoto.
Nella tabella seguente vengono illustrate altre funzioni membro simili a CObList::GetTailPosition
.
Classe | Funzione membro |
---|---|
CPtrList |
POSITION GetTailPosition( ) const; |
CStringList |
POSITION GetTailPosition( ) const; |
Esempio
Vedere CObList::CObList
per un elenco della CAge
classe.
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
Aggiunge un elemento a questo elenco dopo l'elemento nella posizione specificata.
POSITION InsertAfter(
POSITION position,
CObject* newElement);
Parametri
position
Valore POSITION
restituito da una chiamata di funzione membro , GetPrev
o Find
precedenteGetNext
.
newElement
Puntatore all'oggetto da aggiungere a questo elenco.
Nella tabella seguente vengono illustrate altre funzioni membro simili a CObList::InsertAfter
.
Classe | Funzione membro |
---|---|
CPtrList |
POSITION InsertAfter( POSITION position , void * newElement ); |
CStringList |
POSITION InsertAfter( POSITION position , const CString& newElement ); POSITION InsertAfter( POSITION position , LPCTSTR newElement ); |
Valore restituito
Valore POSITION
uguale al position
parametro .
Esempio
Vedere CObList::CObList
per un elenco della CAge
classe.
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
I risultati di questo programma sono i seguenti:
InsertAfter example: A CObList with 3 elements
a CAge at $4A44 40
a CAge at $4A64 65
a CAge at $4968 21
CObList::InsertBefore
Aggiunge un elemento all'elenco prima dell'elemento nella posizione specificata.
POSITION InsertBefore(
POSITION position,
CObject* newElement);
Parametri
position
Valore POSITION
restituito da una chiamata di funzione membro , GetPrev
o Find
precedenteGetNext
.
newElement
Puntatore all'oggetto da aggiungere a questo elenco.
Valore restituito
Valore POSITION
che può essere utilizzato per il recupero dell'iterazione o del puntatore a oggetti; NULL
se l'elenco è vuoto.
Nella tabella seguente vengono illustrate altre funzioni membro simili a CObList::InsertBefore
.
Classe | Funzione membro |
---|---|
CPtrList |
POSITION InsertBefore( POSITION position , void * newElement ); |
CStringList |
POSITION InsertBefore( POSITION position , const CString& newElement ); POSITION InsertBefore( POSITION position , LPCTSTR newElement ); |
Esempio
Vedere CObList::CObList
per un elenco della CAge
classe.
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
I risultati di questo programma sono i seguenti:
InsertBefore example: A CObList with 3 elements
a CAge at $4AE2 40
a CAge at $4B02 65
a CAge at $49E6 21
CObList::IsEmpty
Indica se l'elenco non contiene elementi.
BOOL IsEmpty() const;
Valore restituito
Diverso da zero se l'elenco è vuoto; in caso contrario, 0.
Nella tabella seguente vengono illustrate altre funzioni membro simili a CObList::IsEmpty
.
Classe | Funzione membro |
---|---|
CPtrList |
BOOL IsEmpty( ) const; |
CStringList |
BOOL IsEmpty( ) const; |
Esempio
Vedere l'esempio per RemoveAll
.
CObList::RemoveAll
Rimuove tutti gli elementi da questo elenco e libera la memoria associata CObList
.
void RemoveAll();
Osservazioni:
Se l'elenco è già vuoto, non viene generato alcun errore.
Quando si rimuovono elementi da un oggetto CObList
, si rimuovono i puntatori agli oggetti dall'elenco. È responsabilità dell'utente eliminare gli oggetti stessi.
Nella tabella seguente vengono illustrate altre funzioni membro simili a CObList::RemoveAll
.
Classe | Funzione membro |
---|---|
CPtrList |
void RemoveAll( ); |
CStringList |
void RemoveAll( ); |
Esempio
Vedere CObList::CObList
per un elenco della CAge
classe.
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
Rimuove l'elemento specificato da questo elenco.
void RemoveAt(POSITION position);
Parametri
position
Posizione dell'elemento da rimuovere dall'elenco.
Osservazioni:
Quando si rimuove un elemento da un CObList
oggetto , si rimuove il puntatore all'oggetto dall'elenco. È responsabilità dell'utente eliminare gli oggetti stessi.
È necessario assicurarsi che il POSITION
valore rappresenti una posizione valida nell'elenco. Se non è valido, la versione debug della libreria di classi Microsoft Foundation asserisce.
Nella tabella seguente vengono illustrate altre funzioni membro simili a CObList::RemoveAt
.
Classe | Funzione membro |
---|---|
CPtrList |
void RemoveAt( POSITION position ); |
CStringList |
void RemoveAt( POSITION position ); |
Esempio
Prestare attenzione quando si rimuove un elemento durante un'iterazione dell'elenco. Nell'esempio seguente viene illustrata una tecnica di rimozione che garantisce un valore valido POSITION
per GetNext
.
Vedere CObList::CObList
per un elenco della CAge
classe.
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
I risultati di questo programma sono i seguenti:
RemoveAt example: A CObList with 2 elements
a CAge at $4C1E 65
a CAge at $4B22 21
CObList::RemoveHead
Rimuove l'elemento dall'intestazione dell'elenco e ne restituisce un puntatore.
CObject* RemoveHead();
Valore restituito
Puntatore CObject
precedentemente all'inizio dell'elenco.
Osservazioni:
È necessario assicurarsi che l'elenco non sia vuoto prima di chiamare RemoveHead
. Se l'elenco è vuoto, la versione debug della libreria di classi Microsoft Foundation asserisce. Utilizzare IsEmpty
per verificare che l'elenco contenga elementi.
Nella tabella seguente vengono illustrate altre funzioni membro simili a CObList::RemoveHead
.
Classe | Funzione membro |
---|---|
CPtrList |
void* RemoveHead( ); |
CStringList |
CString RemoveHead( ); |
Esempio
Vedere CObList::CObList
per un elenco della CAge
classe.
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
Rimuove l'elemento dalla parte finale dell'elenco e ne restituisce un puntatore.
CObject* RemoveTail();
Valore restituito
Puntatore all'oggetto che si trovava nella parte finale dell'elenco.
Osservazioni:
È necessario assicurarsi che l'elenco non sia vuoto prima di chiamare RemoveTail
. Se l'elenco è vuoto, la versione debug della libreria di classi Microsoft Foundation asserisce. Utilizzare IsEmpty
per verificare che l'elenco contenga elementi.
Nella tabella seguente vengono illustrate altre funzioni membro simili a CObList::RemoveTail
.
Classe | Funzione membro |
---|---|
CPtrList |
void* RemoveTail( ); |
CStringList |
CString RemoveTail( ); |
Esempio
Vedere CObList::CObList
per un elenco della CAge
classe.
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
Imposta l'elemento in una determinata posizione.
void SetAt(
POSITION pos,
CObject* newElement);
Parametri
pos
Oggetto POSITION
dell'elemento da impostare.
newElement
Puntatore CObject
da scrivere nell'elenco.
Osservazioni:
Una variabile di tipo POSITION
è una chiave per l'elenco. Non è uguale a un indice e non è possibile operare manualmente su un POSITION
valore. SetAt
scrive il CObject
puntatore nella posizione specificata nell'elenco.
È necessario assicurarsi che il POSITION
valore rappresenti una posizione valida nell'elenco. Se non è valido, la versione debug della libreria di classi Microsoft Foundation asserisce.
Nella tabella seguente vengono illustrate altre funzioni membro simili a CObList::SetAt
.
Classe | Funzione membro |
---|---|
CPtrList |
void SetAt( POSITION pos , const CString& newElement ); |
CStringList |
void SetAt( POSITION pos , LPCTSTR newElement ); |
Esempio
Vedere CObList::CObList
per un elenco della CAge
classe.
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
I risultati di questo programma sono i seguenti:
SetAt example: A CObList with 2 elements
a CAge at $4D98 40
a CAge at $4DB8 65
Vedi anche
CObject
Classe
Grafico della gerarchia
CStringList
Classe
CPtrList
Classe