Classe CObList
Dá suporte a listas ordenadas de ponteiros CObject
não exclusivos acessíveis sequencialmente ou por valor de ponteiro.
Sintaxe
class CObList : public CObject
Membros
Construtores públicos
Nome | Descrição |
---|---|
CObList::CObList |
Constrói uma lista vazia para ponteiros CObject . |
Métodos públicos
Nome | Descrição |
---|---|
CObList::AddHead |
Adiciona um elemento (ou todos os elementos em outra lista) ao cabeçalho da lista (faz um novo cabeçalho). |
CObList::AddTail |
Adiciona um elemento (ou todos os elementos em outra lista) à parte final da lista (faz uma nova parte final). |
CObList::Find |
Obtém a posição de um elemento especificado pelo valor do ponteiro. |
CObList::FindIndex |
Obtém a posição de um elemento especificado por um índice baseado em zero. |
CObList::GetAt |
Obtém o elemento em uma determinada posição. |
CObList::GetCount |
Retorna o número de elementos nessa lista. |
CObList::GetHead |
Retorna o elemento head da lista (não pode estar vazio). |
CObList::GetHeadPosition |
Retorna a posição do elemento principal da lista. |
CObList::GetNext |
Obtém o próximo elemento para iteração. |
CObList::GetPrev |
Obtém o elemento anterior para iteração. |
CObList::GetSize |
Retorna o número de elementos nessa lista. |
CObList::GetTail |
Retorna o elemento final da lista (não pode estar vazio). |
CObList::GetTailPosition |
Retorna a posição do elemento final da lista. |
CObList::InsertAfter |
Insere um novo elemento após uma determinada posição. |
CObList::InsertBefore |
Insere um novo elemento antes de uma determinada posição. |
CObList::IsEmpty |
Testa a condição de lista vazia (sem elementos). |
CObList::RemoveAll |
Remove todos os elementos dessa lista. |
CObList::RemoveAt |
Remove um elemento dessa lista, especificado pela posição. |
CObList::RemoveHead |
Remove o elemento do cabeçalho da lista. |
CObList::RemoveTail |
Remove o elemento da parte final da lista. |
CObList::SetAt |
Define o elemento em uma determinada posição. |
Comentários
As listas CObList
se comportam como listas duplamente vinculadas.
Uma variável do tipo POSITION
é uma chave para a lista. Você pode usar uma variável POSITION
como um iterador para percorrer uma lista sequencialmente e como um indicador para manter um lugar. No entanto, uma posição não é a mesma que um índice.
A inserção de elementos é muito rápida no topo da lista, na parte final e em uma POSITION
conhecida. Uma pesquisa sequencial é necessária para pesquisar um elemento por valor ou índice. Essa pesquisa pode ser lenta se a lista for longa.
A CObList
incorpora a macro IMPLEMENT_SERIAL
para suportar serialização e despejo de seus elementos. Se uma lista de ponteiros CObject
for armazenada em um arquivo morto, com um operador de inserção sobrecarregado ou com a função de membro Serialize
, cada elemento CObject
será serializado individualmente.
Se for necessário um despejo de elementos CObject
individuais na lista, será necessário definir a profundidade do contexto do despejo para 1 ou maior.
Quando um objeto CObList
é excluído ou quando seus elementos são removidos, apenas os ponteiros CObject
são removidos, não os objetos que eles referenciam.
Você pode derivar suas classes de CObList
. Sua nova classe de lista, projetada para conter ponteiros para objetos derivados de CObject
, adiciona membros de dados e funções de membro. Observe que a lista resultante não é fortemente tipada de modo estrito, pois permite a inserção de qualquer ponteiro CObject
.
Observação
Você deve usar a macro IMPLEMENT_SERIAL
na implementação de sua classe derivada se pretende serializar a lista.
Para mais informações sobre como usar CObList
, confira o artigo Coleções.
Hierarquia de herança
CObList
Requisitos
Cabeçalho: afxcoll.h
CObList::AddHead
Adiciona um novo elemento ou lista de elementos ao cabeçalho desta lista.
POSITION AddHead(CObject* newElement);
void AddHead(CObList* pNewList);
Parâmetros
newElement
O ponteiro CObject
a ser adicionado a essa lista.
pNewList
Um ponteiro para outra lista CObList
. Os elementos em pNewList
serão adicionados a essa lista.
Valor de retorno
A primeira versão retorna o valor POSITION
do elemento que acaba de ser inserido.
A tabela a seguir mostra outras funções de membro semelhantes a CObList::AddHead
.
Classe | Função membro |
---|---|
CPtrList |
POSITION AddHead( void * newElement ); void AddHead( CPtrList * pNewList ); |
CStringList |
POSITION AddHead(const CString& newElement ); POSITION AddHead(LPCTSTR newElement ); void AddHead(CStringList * pNewList ); |
Comentários
A lista pode estar vazia antes da operação.
Exemplo
Confira CObList::CObList
para uma listagem da classe CAge
.
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
Os resultados deste programa são os seguintes:
AddHead example: A CObList with 2 elements
a CAge at $44A8 40
a CAge at $442A 21
CObList::AddTail
Adiciona um novo elemento ou lista de elementos à parte final dessa lista.
POSITION AddTail(CObject* newElement);
void AddTail(CObList* pNewList);
Parâmetros
newElement
O ponteiro CObject
a ser adicionado a essa lista.
pNewList
Um ponteiro para outra lista CObList
. Os elementos em pNewList
serão adicionados a essa lista.
Valor de retorno
A primeira versão retorna o valor POSITION
do elemento que acaba de ser inserido.
Comentários
A lista pode estar vazia antes da operação.
A tabela a seguir mostra outras funções de membro semelhantes a CObList::AddTail
.
Classe | Função membro |
---|---|
CPtrList |
POSITION AddTail( void * newElement ); void AddTail( CPtrList * pNewList ); |
CStringList |
POSITION AddTail( const CString& newElement ); POSITION AddTail( LPCTSTR newElement ); void AddTail( CStringList * pNewList ); |
Exemplo
Confira CObList::CObList
para uma listagem da classe CAge
.
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
Os resultados deste programa são os seguintes:
AddTail example: A CObList with 2 elements
a CAge at $444A 21
a CAge at $4526 40
CObList::CObList
Constrói uma lista de ponteiros CObject
vazia.
CObList(INT_PTR nBlockSize = 10);
Parâmetros
nBlockSize
A granularidade da alocação de memória para estender a lista.
Comentários
À medida que a lista cresce, a memória é alocada em unidades de nBlockSize
entradas. Se uma alocação de memória falhar, um CMemoryException
será gerado.
A tabela a seguir mostra outras funções de membro semelhantes a CObList::CObList
.
Classe | Função membro |
---|---|
CPtrList |
CPtrList( INT_PTR nBlockSize = 10 ); |
CStringList |
CStringList( INT_PTR nBlockSize = 10 ); |
Exemplo
Veja abaixo uma listagem da classe CAge
derivada de CObject
usada em todos os exemplos de coleção:
// 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
};
Veja abaixo um exemplo de uso do construtor CObList
:
CObList list(20); // List on the stack with blocksize = 20.
CObList* plist = new CObList; // List on the heap with default
// blocksize.
CObList::Find
Pesquisa a lista sequencialmente para localizar o primeiro ponteiro CObject
que corresponde ao ponteiro CObject
especificado.
POSITION Find(
CObject* searchValue,
POSITION startAfter = NULL) const;
Parâmetros
searchValue
O ponteiro do objeto a ser encontrado nesta lista.
startAfter
A posição inicial da pesquisa.
Valor de retorno
Um valor POSITION
que pode ser usado para iteração ou recuperação de ponteiro de objeto; NULL
se o objeto não for encontrado.
Comentários
Observe que os valores de ponteiro são comparados, não o conteúdo dos objetos.
A tabela a seguir mostra outras funções de membro semelhantes a CObList::Find
.
Classe | Função membro |
---|---|
CPtrList |
POSITION Find( void *searchValue , POSITION startAfter = NULL ) const; |
CStringList |
POSITION Find( LPCTSTR searchValue , POSITION startAfter = NULL ) const; |
Exemplo
Confira CObList::CObList
para uma listagem da classe CAge
.
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 o valor de nIndex
como um índice na lista.
POSITION FindIndex(INT_PTR nIndex) const;
Parâmetros
nIndex
O índice baseado em zero do elemento de lista a ser encontrado.
Valor de retorno
Um valor de POSITION
que pode ser usado para iteração ou recuperação de ponteiro de objeto; NULL
se nIndex
for muito grande. (A estrutura gerará uma declaração se nIndex
for negativo.)
Comentários
Ele inicia uma verificação sequencial do cabeçalho da lista, parando no nº elemento.
A tabela a seguir mostra outras funções de membro semelhantes a CObList::FindIndex
.
Classe | Função membro |
---|---|
CPtrList |
POSITION FindIndex( INT_PTR nIndex ) const; |
CStringList |
POSITION FindIndex( INT_PTR nIndex ) const; |
Exemplo
Confira CObList::CObList
para uma listagem da classe CAge
.
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
Uma variável do tipo POSITION
é uma chave para a lista.
CObject*& GetAt(POSITION position);
const CObject*& GetAt(POSITION position) const;
Parâmetros
position
Um valor POSITION
retornado por uma chamada de função de membro GetHeadPosition
ou Find
anterior.
Valor de retorno
Confira a descrição do valor retornado para GetHead
.
Comentários
Não é o mesmo que um índice, e você não pode operar em um POSITION
valor por conta própria. GetAt
recupera o ponteiro CObject
associado a uma determinada posição.
Você deve garantir que o valor de POSITION
represente uma posição válida na lista. Se ele for inválido, a versão de Depuração da biblioteca Microsoft Foundation Class será declarada.
A tabela a seguir mostra outras funções de membro semelhantes a CObList::GetAt
.
Classe | Função membro |
---|---|
CPtrList |
const void*& GetAt( POSITION position ) const; void*& GetAt( POSITION position ); |
CStringList |
const CString& GetAt( POSITION position ) const; CString& GetAt( POSITION position ); |
Exemplo
Confira o exemplo de FindIndex
.
CObList::GetCount
Obtém o número de elementos na lista.
INT_PTR GetCount() const;
Valor de retorno
Um valor inteiro que contém a contagem de elementos.
A tabela a seguir mostra outras funções de membro semelhantes a CObList::GetCount
.
Classe | Função membro |
---|---|
CPtrList |
INT_PTR GetCount( ) const; |
CStringList |
INT_PTR GetCount( ) const; |
Exemplo
Confira CObList::CObList
para uma listagem da classe CAge
.
CObList list;
list.AddHead(new CAge(21));
list.AddHead(new CAge(40)); // List now contains (40, 21).
ASSERT(list.GetCount() == 2);
CObList::GetHead
Obtém o ponteiro CObject
que representa o elemento de cabeçalho desta lista.
CObject*& GetHead();
const CObject*& GetHead() const;
Valor de retorno
Se a lista for acessada por meio de um ponteiro para um const CObList
, GetHead
retornará um ponteiro CObject
. Isso permite que a função seja usada apenas no lado direito de uma instrução de atribuição e, portanto, protege a lista contra modificações.
Se a lista for acessada diretamente ou por meio de um ponteiro para um CObList
, GetHead
retornará uma referência a um ponteiro CObject
. Isso permite que a função seja usada em ambos os lados de uma instrução de atribuição e, portanto, permite que as entradas da lista sejam modificadas.
Comentários
Você deve garantir que a lista não esteja vazia antes de chamar GetHead
. Se a lista estiver vazia, a versão de Depuração da biblioteca Microsoft Foundation Class será declarada. Use IsEmpty
para verificar se a lista contém elementos.
A tabela a seguir mostra outras funções de membro semelhantes a CObList::GetHead
.
Classe | Função membro |
---|---|
CPtrList |
const void*& GetHead( ) const; void*& GetHead( ); |
CStringList |
const CString& GetHead( ) const; CString& GetHead( ); |
Exemplo
Confira CObList::CObList
para uma listagem da classe CAge
.
O exemplo a seguir ilustra o uso de GetHead
no lado esquerdo de uma instrução de atribuição.
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
Obtém a posição do elemento principal desta lista.
POSITION GetHeadPosition() const;
Valor de retorno
Um valor POSITION
que pode ser usado para iteração ou recuperação do ponteiro do objeto; NULL
se a lista estiver vazia.
A tabela a seguir mostra outras funções de membro semelhantes a CObList::GetHeadPosition
.
Classe | Função membro |
---|---|
CPtrList |
POSITION GetHeadPosition( ) const; |
CStringList |
POSITION GetHeadPosition( ) const; |
Exemplo
Confira CObList::CObList
para uma listagem da classe CAge
.
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
Obtém o elemento de lista identificado por rPosition
, então define rPosition
como o valor POSITION
da próxima entrada na lista.
CObject*& GetNext(POSITION& rPosition);
const CObject* GetNext(POSITION& rPosition) const;
Parâmetros
rPosition
Uma referência a um valor POSITION
retornado por uma chamada de função membro GetNext
, GetHeadPosition
ou outra chamada de função membro anterior.
Valor de retorno
Confira a descrição do valor retornado para GetHead
.
Comentários
Você poderá usar GetNext
em um loop de iteração direta se estabelecer a posição inicial com uma chamada para GetHeadPosition
ou Find
.
Você deve garantir que o valor de POSITION
represente uma posição válida na lista. Se ele for inválido, a versão de Depuração da biblioteca Microsoft Foundation Class será declarada.
Se o elemento recuperado for o último na lista, o novo valor de rPosition
será definido como NULL
.
É possível remover um elemento durante uma iteração. Confira o exemplo de RemoveAt
.
Observação
Do MFC 8.0, a versão const deste método foi alterada para retornar const CObject*
em vez de const CObject*&
. Essa alteração foi feita para colocar o compilador em conformidade com o padrão C++.
A tabela a seguir mostra outras funções de membro semelhantes a CObList::GetNext
.
Classe | Função membro |
---|---|
CPtrList |
void*& GetNext( POSITION& rPosition ); const void* GetNext( POSITION& rPosition ) const; |
CStringList |
CString& GetNext( POSITION& rPosition ); const CString& GetNext( POSITION& rPosition ) const; |
Exemplo
Confira CObList::CObList
para uma listagem da classe CAge
.
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
Os resultados deste programa são os seguintes:
a CAge at $479C 40
a CAge at $46C0 21
CObList::GetPrev
Obtém o elemento de lista identificado por rPosition
, então define rPosition
como o valor POSITION
da entrada anterior na lista.
CObject*& GetPrev(POSITION& rPosition);
const CObject* GetPrev(POSITION& rPosition) const;
Parâmetros
rPosition
Uma referência a um valor POSITION
retornado por uma chamada de função membro GetPrev
ou outra chamada de função membro anterior.
Valor de retorno
Confira a descrição do valor retornado para GetHead
.
Comentários
Você poderá usar GetPrev
em um loop de iteração reversa se estabelecer a posição inicial com uma chamada para GetTailPosition
ou Find
.
Você deve garantir que o valor de POSITION
represente uma posição válida na lista. Se ele for inválido, a versão de Depuração da biblioteca Microsoft Foundation Class será declarada.
Se o elemento recuperado for o primeiro da lista, o novo valor de rPosition
será definido como NULL
.
Observação
Do MFC 8.0, a versão const deste método foi alterada para retornar const CObject*
em vez de const CObject*&
. Essa alteração foi feita para colocar o compilador em conformidade com o padrão C++.
A tabela a seguir mostra outras funções de membro semelhantes a CObList::GetPrev
.
Classe | Função membro |
---|---|
CPtrList |
void*& GetPrev( POSITION& rPosition ); const void* GetPrev( POSITION& rPosition ) const; |
CStringList |
CString& GetPrev( POSITION& rPosition ); const CString& GetPrev( POSITION& rPosition ) const; |
Exemplo
Confira CObList::CObList
para uma listagem da classe CAge
.
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
}
Os resultados deste programa são os seguintes:
a CAge at $421C 21
a CAge at $421C 40
CObList::GetSize
Retorna o número de elementos da lista.
INT_PTR GetSize() const;
Valor de retorno
O número de itens da lista.
Comentários
Chame esse método para recuperar o número de elementos na lista.
A tabela a seguir mostra outras funções de membro semelhantes a CObList::GetSize
.
Classe | Função membro |
---|---|
CPtrList |
INT_PTR GetSize( ) const; |
CStringList |
INT_PTR GetSize( ) const; |
Exemplo
Confira CObList::CObList
para uma listagem da classe CAge
.
CObList list;
list.AddHead(new CAge(21));
list.AddHead(new CAge(40)); // List now contains (40, 21).
ASSERT(list.GetSize() == 2);
CObList::GetTail
Obtém o ponteiro CObject
que representa o elemento final desta lista.
CObject*& GetTail();
const CObject*& GetTail() const;
Valor de retorno
Confira a descrição do valor retornado para GetHead
.
Comentários
Você deve garantir que a lista não esteja vazia antes de chamar GetTail
. Se a lista estiver vazia, a versão de Depuração da biblioteca Microsoft Foundation Class será declarada. Use IsEmpty
para verificar se a lista contém elementos.
A tabela a seguir mostra outras funções de membro semelhantes a CObList::GetTail
.
Classe | Função membro |
---|---|
CPtrList |
const void*& GetTail( ) const; void*& GetTail( ); |
CStringList |
const CString& GetTail( ) const; CString& GetTail( ); |
Exemplo
Confira CObList::CObList
para uma listagem da classe CAge
.
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
Obtém a posição do elemento final desta lista; NULL
se a lista estiver vazia.
POSITION GetTailPosition() const;
Valor de retorno
Um valor POSITION
que pode ser usado para iteração ou recuperação do ponteiro do objeto; NULL
se a lista estiver vazia.
A tabela a seguir mostra outras funções de membro semelhantes a CObList::GetTailPosition
.
Classe | Função membro |
---|---|
CPtrList |
POSITION GetTailPosition( ) const; |
CStringList |
POSITION GetTailPosition( ) const; |
Exemplo
Confira CObList::CObList
para uma listagem da classe CAge
.
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
Adiciona um elemento a essa lista após o elemento na posição especificada.
POSITION InsertAfter(
POSITION position,
CObject* newElement);
Parâmetros
position
Um valor POSITION
retornado por uma chamada de função membro GetNext
, GetPrev
ou Find
anterior.
newElement
O ponteiro do objeto a ser adicionado a essa lista.
A tabela a seguir mostra outras funções de membro semelhantes a CObList::InsertAfter
.
Classe | Função membro |
---|---|
CPtrList |
POSITION InsertAfter( POSITION position , void * newElement ); |
CStringList |
POSITION InsertAfter( POSITION position , const CString& newElement ); POSITION InsertAfter( POSITION position , LPCTSTR newElement ); |
Valor de retorno
Um valor POSITION
que é o mesmo que o parâmetro position
.
Exemplo
Confira CObList::CObList
para uma listagem da classe CAge
.
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
Os resultados deste programa são os seguintes:
InsertAfter example: A CObList with 3 elements
a CAge at $4A44 40
a CAge at $4A64 65
a CAge at $4968 21
CObList::InsertBefore
Adiciona um elemento a essa lista antes do elemento na posição especificada.
POSITION InsertBefore(
POSITION position,
CObject* newElement);
Parâmetros
position
Um valor POSITION
retornado por uma chamada de função membro GetNext
, GetPrev
ou Find
anterior.
newElement
O ponteiro do objeto a ser adicionado a essa lista.
Valor de retorno
Um valor POSITION
que pode ser usado para iteração ou recuperação do ponteiro do objeto; NULL
se a lista estiver vazia.
A tabela a seguir mostra outras funções de membro semelhantes a CObList::InsertBefore
.
Classe | Função membro |
---|---|
CPtrList |
POSITION InsertBefore( POSITION position , void * newElement ); |
CStringList |
POSITION InsertBefore( POSITION position , const CString& newElement ); POSITION InsertBefore( POSITION position , LPCTSTR newElement ); |
Exemplo
Confira CObList::CObList
para uma listagem da classe CAge
.
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
Os resultados deste programa são os seguintes:
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 essa lista não contém elementos.
BOOL IsEmpty() const;
Valor de retorno
Não zero se essa lista estiver vazia; caso contrário, 0.
A tabela a seguir mostra outras funções de membro semelhantes a CObList::IsEmpty
.
Classe | Função membro |
---|---|
CPtrList |
BOOL IsEmpty( ) const; |
CStringList |
BOOL IsEmpty( ) const; |
Exemplo
Confira o exemplo de RemoveAll
.
CObList::RemoveAll
Remove todos os elementos dessa lista e libera a memória CObList
associada.
void RemoveAll();
Comentários
Nenhum erro será gerado se a lista já estiver vazia.
Quando você remove elementos de um CObList
, remove os ponteiros do objeto da lista. É sua responsabilidade excluir os objetos em si.
A tabela a seguir mostra outras funções de membro semelhantes a CObList::RemoveAll
.
Classe | Função membro |
---|---|
CPtrList |
void RemoveAll( ); |
CStringList |
void RemoveAll( ); |
Exemplo
Confira CObList::CObList
para uma listagem da classe CAge
.
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
Remove o elemento especificado da lista.
void RemoveAt(POSITION position);
Parâmetros
position
A posição do elemento a ser removido da lista.
Comentários
Quando você remove um elemento de um CObList
, remove o ponteiro do objeto da lista. É sua responsabilidade excluir os objetos em si.
Você deve garantir que o valor de POSITION
represente uma posição válida na lista. Se ele for inválido, a versão de Depuração da biblioteca Microsoft Foundation Class será declarada.
A tabela a seguir mostra outras funções de membro semelhantes a CObList::RemoveAt
.
Classe | Função membro |
---|---|
CPtrList |
void RemoveAt( POSITION position ); |
CStringList |
void RemoveAt( POSITION position ); |
Exemplo
Tenha cuidado ao remover um elemento durante uma iteração de lista. O exemplo a seguir mostra uma técnica de remoção que garante um valor de POSITION
válido para GetNext
.
Confira CObList::CObList
para uma listagem da classe CAge
.
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
Os resultados deste programa são os seguintes:
RemoveAt example: A CObList with 2 elements
a CAge at $4C1E 65
a CAge at $4B22 21
CObList::RemoveHead
Remove o elemento da cabeça da lista e retorna um ponteiro para ele.
CObject* RemoveHead();
Valor de retorno
O ponteiro CObject
anteriormente no cabeçalho da lista.
Comentários
Você deve garantir que a lista não esteja vazia antes de chamar RemoveHead
. Se a lista estiver vazia, a versão de Depuração da biblioteca Microsoft Foundation Class será declarada. Use IsEmpty
para verificar se a lista contém elementos.
A tabela a seguir mostra outras funções de membro semelhantes a CObList::RemoveHead
.
Classe | Função membro |
---|---|
CPtrList |
void* RemoveHead( ); |
CStringList |
CString RemoveHead( ); |
Exemplo
Confira CObList::CObList
para uma listagem da classe CAge
.
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
Remove o elemento da parte final da lista e retorna um ponteiro para ele.
CObject* RemoveTail();
Valor de retorno
Um ponteiro para o objeto que estava na parte final da lista.
Comentários
Você deve garantir que a lista não esteja vazia antes de chamar RemoveTail
. Se a lista estiver vazia, a versão de Depuração da biblioteca Microsoft Foundation Class será declarada. Use IsEmpty
para verificar se a lista contém elementos.
A tabela a seguir mostra outras funções de membro semelhantes a CObList::RemoveTail
.
Classe | Função membro |
---|---|
CPtrList |
void* RemoveTail( ); |
CStringList |
CString RemoveTail( ); |
Exemplo
Confira CObList::CObList
para uma listagem da classe CAge
.
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
Define o elemento em uma determinada posição.
void SetAt(
POSITION pos,
CObject* newElement);
Parâmetros
pos
O POSITION
do elemento a ser definido.
newElement
O ponteiro CObject
a ser gravado na lista.
Comentários
Uma variável do tipo POSITION
é uma chave para a lista. Não é o mesmo que um índice, e você não pode operar em um POSITION
valor por conta própria. SetAt
grava o ponteiro CObject
na posição especificada na lista.
Você deve garantir que o valor de POSITION
represente uma posição válida na lista. Se ele for inválido, a versão de Depuração da biblioteca Microsoft Foundation Class será declarada.
A tabela a seguir mostra outras funções de membro semelhantes a CObList::SetAt
.
Classe | Função membro |
---|---|
CPtrList |
void SetAt( POSITION pos , const CString& newElement ); |
CStringList |
void SetAt( POSITION pos , LPCTSTR newElement ); |
Exemplo
Confira CObList::CObList
para uma listagem da classe CAge
.
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
Os resultados deste programa são os seguintes:
SetAt example: A CObList with 2 elements
a CAge at $4D98 40
a CAge at $4DB8 65
Confira também
Classe CObject
Gráfico da hierarquia
Classe CStringList
Classe CPtrList