Compartilhar via


CObList Classe

Observação

A biblioteca Microsoft Foundation Classes (MFC) continua sendo suportada. No entanto, não estamos mais adicionando recursos ou atualizando a documentação.

Dá suporte a listas ordenadas de ponteiros não-comunicados CObject 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 CObject ponteiros.

Métodos públicos

Nome DESCRIÇÃO
CObList::AddHead Adiciona um elemento (ou todos os elementos em outra lista) ao cabeçalho da lista (cria uma nova cabeça).
CObList::AddTail Adiciona um elemento (ou todos os elementos em outra lista) à parte final da lista (faz uma nova cauda).
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 nesta lista.
CObList::GetHead Retorna o elemento principal 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 iterar.
CObList::GetPrev Obtém o elemento anterior para iteração.
CObList::GetSize Retorna o número de elementos nesta 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 por 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.

Observações

CObList as listas se comportam como listas duplamente vinculadas.

Uma variável de tipo POSITION é uma chave para a lista. Você pode usar uma POSITION variável 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 elemento é muito rápida na cabeça da lista, na parte final e em um conhecido POSITION. Uma pesquisa sequencial é necessária para pesquisar um elemento por valor ou índice. Essa pesquisa poderá ser lenta se a lista for longa.

CObList incorpora a IMPLEMENT_SERIAL macro para dar suporte à serialização e despejo de seus elementos. Se uma lista de CObject ponteiros for armazenada em um arquivo morto, com um operador de inserção sobrecarregado ou com a Serialize função membro, cada CObject elemento será serializado por sua vez.

Se você precisar de um despejo de elementos individuais CObject na lista, deverá definir a profundidade do contexto de despejo como 1 ou maior.

Quando um CObList objeto é excluído ou quando seus elementos são removidos, somente os CObject ponteiros são removidos, não os objetos que eles referenciam.

Você pode derivar suas próprias classes de CObList. Sua nova classe de lista, projetada para conter ponteiros para objetos derivados CObject, adiciona novos membros de dados e novas funções de membro. Observe que a lista resultante não é estritamente segura, pois permite a inserção de qualquer CObject ponteiro.

Observação

Você deve usar a IMPLEMENT_SERIAL macro na implementação de sua classe derivada se pretende serializar a lista.

Para obter mais informações sobre como usar CObList, consulte o artigo Coleções.

Hierarquia de herança

CObject

CObList

Requirements

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 CObject ponteiro a ser adicionado a essa lista.

pNewList
Um ponteiro para outra CObList lista. Os elementos na pNewList lista serão adicionados.

Valor de retorno

A primeira versão retorna o POSITION valor do elemento recém-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 );

Observações

A lista pode estar vazia antes da operação.

Example

Consulte CObList::CObList uma listagem da 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      

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 desta lista.

POSITION AddTail(CObject* newElement);
void AddTail(CObList* pNewList);

Parâmetros

newElement
O CObject ponteiro a ser adicionado a essa lista.

pNewList
Um ponteiro para outra CObList lista. Os elementos na pNewList lista serão adicionados.

Valor de retorno

A primeira versão retorna o POSITION valor do elemento recém-inserido.

Observações

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 );

Example

Consulte CObList::CObList uma listagem da 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      

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 vazia CObject .

CObList(INT_PTR nBlockSize = 10);

Parâmetros

nBlockSize
A granularidade de alocação de memória para estender a lista.

Observações

À medida que a lista aumenta, a memória é alocada em unidades de nBlockSize entradas. Se uma alocação de memória falhar, uma CMemoryException será gerada.

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 );

Example

Veja abaixo uma listagem da CObjectclasse CAge derivada 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 CObList construtor:

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 CObject ponteiro correspondente ao ponteiro especificado CObject .

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 POSITION valor que pode ser usado para iteração ou recuperação de ponteiro de objeto; NULL se o objeto não for encontrado.

Observações

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;

Example

Consulte CObList::CObList uma listagem da 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 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 POSITION valor que pode ser usado para iteração ou recuperação de ponteiro de objeto; NULL se nIndex for muito grande. (A estrutura gera uma asserção se nIndex for negativa.)

Observações

Ele inicia uma verificação sequencial do cabeçalho da lista, parando no elemento nth.

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;

Example

Consulte CObList::CObList uma listagem da 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

Uma variável de tipo POSITION é uma chave para a lista.

CObject*& GetAt(POSITION position);
const CObject*& GetAt(POSITION position) const;

Parâmetros

position
Um POSITION valor retornado por uma chamada de função anterior GetHeadPosition ou Find membro.

Valor de retorno

Consulte a descrição do valor retornado para GetHead.

Observações

Não é o mesmo que um índice e você não pode operar em um POSITION valor por conta própria. GetAt recupera o CObject ponteiro associado a uma determinada posição.

Você deve garantir que seu POSITION valor represente uma posição válida na lista. Se for inválido, a versão de depuração da Biblioteca de Classes do Microsoft Foundation 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 );

Example

Confira o exemplo de FindIndex.

CObList::GetCount

Obtém o número de elementos nesta 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;

Example

Consulte CObList::CObList uma listagem da 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

Obtém o CObject ponteiro que representa o elemento principal 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, retornará GetHead um CObject ponteiro. 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, retornará GetHead uma referência a um CObject ponteiro. 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.

Observações

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 de Classes do Microsoft Foundation 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( );

Example

Consulte CObList::CObList uma listagem da CAge classe.

O exemplo a seguir ilustra o uso do GetHead 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 POSITION valor que pode ser usado para iteração ou recuperação de ponteiro de 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;

Example

Consulte CObList::CObList uma listagem da 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

Obtém o elemento de lista identificado por rPosition, em seguida, define rPosition para o POSITION valor da próxima entrada na lista.

CObject*& GetNext(POSITION& rPosition);
const CObject* GetNext(POSITION& rPosition) const;

Parâmetros

rPosition
Uma referência a um POSITION valor retornado por uma chamada de função de membro anterior GetNextGetHeadPositionou outro membro.

Valor de retorno

Consulte a descrição do valor retornado para GetHead.

Observações

Você pode usar GetNext em um loop de iteração de encaminhamento se estabelecer a posição inicial com uma chamada para GetHeadPosition ou Find.

Você deve garantir que seu POSITION valor represente uma posição válida na lista. Se for inválido, a versão de depuração da Biblioteca de Classes do Microsoft Foundation será declarada.

Se o elemento recuperado for o último da lista, o novo valor será rPosition definido como NULL.

É possível remover um elemento durante uma iteração. Confira o exemplo de RemoveAt.

Observação

A partir 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;

Example

Consulte CObList::CObList uma listagem da 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      

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, em seguida, define rPosition como o POSITION valor da entrada anterior na lista.

CObject*& GetPrev(POSITION& rPosition);
const CObject* GetPrev(POSITION& rPosition) const;

Parâmetros

rPosition
Uma referência a um POSITION valor retornado por uma chamada de função de membro anterior GetPrev ou outra.

Valor de retorno

Consulte a descrição do valor retornado para GetHead.

Observações

Você pode 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 seu POSITION valor represente uma posição válida na lista. Se for inválido, a versão de depuração da Biblioteca de Classes do Microsoft Foundation será declarada.

Se o elemento recuperado for o primeiro da lista, o novo valor será rPosition definido como NULL.

Observação

A partir 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;

Example

Consulte CObList::CObList uma listagem da 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
}

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 de lista.

INT_PTR GetSize() const;

Valor de retorno

O número de itens na lista.

Observações

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;

Example

Consulte CObList::CObList uma listagem da 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

Obtém o CObject ponteiro que representa o elemento final desta lista.

CObject*& GetTail();
const CObject*& GetTail() const;

Valor de retorno

Consulte a descrição do valor retornado para GetHead.

Observações

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 de Classes do Microsoft Foundation 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( );

Example

Consulte CObList::CObList uma listagem da 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

Obtém a posição do elemento final desta lista; NULL se a lista estiver vazia.

POSITION GetTailPosition() const;

Valor de retorno

Um POSITION valor que pode ser usado para iteração ou recuperação de ponteiro de 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;

Example

Consulte CObList::CObList uma listagem da 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

Adiciona um elemento a essa lista após o elemento na posição especificada.

POSITION InsertAfter(
    POSITION position,
    CObject* newElement);

Parâmetros

position
Um POSITION valor retornado por uma chamada de função anterior GetNextou GetPrevFind membro.

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 POSITION valor igual ao position parâmetro.

Example

Consulte CObList::CObList uma listagem da 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

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 POSITION valor retornado por uma chamada de função anterior GetNextou GetPrevFind membro.

newElement
O ponteiro do objeto a ser adicionado a essa lista.

Valor de retorno

Um POSITION valor que pode ser usado para iteração ou recuperação de ponteiro de 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 );

Example

Consulte CObList::CObList uma listagem da 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      

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

Diferente de zero se esta 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;

Example

Confira o exemplo de RemoveAll.

CObList::RemoveAll

Remove todos os elementos dessa lista e libera a memória associada CObList .

void RemoveAll();

Observações

Nenhum erro será gerado se a lista já estiver vazia.

Ao remover elementos de um CObList, você remove os ponteiros do objeto da lista. É sua responsabilidade excluir os próprios objetos.

A tabela a seguir mostra outras funções de membro semelhantes a CObList::RemoveAll.

Classe Função membro
CPtrList void RemoveAll( );
CStringList void RemoveAll( );

Example

Consulte CObList::CObList uma listagem da 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

Remove o elemento especificado desta lista.

void RemoveAt(POSITION position);

Parâmetros

position
A posição do elemento a ser removido da lista.

Observações

Ao remover um elemento de um CObList, você remove o ponteiro do objeto da lista. É sua responsabilidade excluir os próprios objetos.

Você deve garantir que seu POSITION valor represente uma posição válida na lista. Se for inválido, a versão de depuração da Biblioteca de Classes do Microsoft Foundation 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 );

Example

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 válido POSITION para GetNext.

Consulte CObList::CObList uma listagem da 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      

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 CObject ponteiro anteriormente à frente da lista.

Observações

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 de Classes do Microsoft Foundation 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( );

Example

Consulte CObList::CObList uma listagem da 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

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.

Observações

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 de Classes do Microsoft Foundation 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( );

Example

Consulte CObList::CObList uma listagem da 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

Define o elemento em uma determinada posição.

void SetAt(
    POSITION pos,
    CObject* newElement);

Parâmetros

pos
O POSITION elemento a ser definido.

newElement
O CObject ponteiro a ser gravado na lista.

Observações

Uma variável de 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 CObject ponteiro na posição especificada na lista.

Você deve garantir que seu POSITION valor represente uma posição válida na lista. Se for inválido, a versão de depuração da Biblioteca de Classes do Microsoft Foundation 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 );

Example

Consulte CObList::CObList uma listagem da 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      

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

Consulte também

Classe CObject
Gráfico da hierarquia
Classe CStringList
Classe CPtrList