Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Classe
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 nBlockSizeentradas. 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 CObjectusada 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