Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Classe
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 CObListdi , 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 CObjectclasse 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 CObListoggetto , 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 CObListoggetto , 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 GetNextchiamata di funzione membro , GetHeadPositiono .
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 , GetPrevo 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 , GetPrevo 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 CObListoggetto , 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