Compartir a través de


CObList Clase

Nota:

La biblioteca Microsoft Foundation Classes (MFC) sigue siendo compatible. Sin embargo, ya no estamos agregando características ni actualizando la documentación.

Admite listas ordenadas de punteros no únicos CObject accesibles secuencialmente o por valor de puntero.

Sintaxis

class CObList : public CObject

Members

Constructores públicos

Nombre Description
CObList::CObList Construye una lista vacía para CObject punteros.

Métodos públicos

Nombre Description
CObList::AddHead Agrega un elemento (o todos los elementos de otra lista) al encabezado de la lista (crea un nuevo encabezado).
CObList::AddTail Agrega un elemento (o todos los elementos de otra lista) a la cola de la lista (convierte una cola nueva).
CObList::Find Obtiene la posición de un elemento especificado por el valor de puntero.
CObList::FindIndex Obtiene la posición de un elemento especificado por un índice de base cero.
CObList::GetAt Obtiene el elemento en una posición determinada.
CObList::GetCount Devuelve el número de elementos de esta lista.
CObList::GetHead Devuelve el elemento principal de la lista (no puede estar vacío).
CObList::GetHeadPosition Devuelve la posición del elemento principal de la lista.
CObList::GetNext Obtiene el siguiente elemento para iterar.
CObList::GetPrev Obtiene el elemento anterior para iterar.
CObList::GetSize Devuelve el número de elementos de esta lista.
CObList::GetTail Devuelve el elemento de cola de la lista (no puede estar vacío).
CObList::GetTailPosition Devuelve la posición del elemento de cola de la lista.
CObList::InsertAfter Inserta un nuevo elemento después de una posición determinada.
CObList::InsertBefore Inserta un nuevo elemento antes de una posición determinada.
CObList::IsEmpty Comprueba la condición de lista vacía (sin elementos).
CObList::RemoveAll Quita todos los elementos de esta lista.
CObList::RemoveAt Quita un elemento de esta lista, especificado por posición.
CObList::RemoveHead Quita el elemento del encabezado de la lista.
CObList::RemoveTail Quita el elemento de la cola de la lista.
CObList::SetAt Establece el elemento en una posición determinada.

Observaciones

CObList las listas se comportan como listas vinculadas doblemente.

Una variable de tipo POSITION es una clave para la lista. Puede usar una POSITION variable como iterador para recorrer una lista secuencialmente y como marcador para contener un lugar. Sin embargo, una posición no es la misma que un índice.

La inserción de elementos es muy rápida en el encabezado de lista, en la cola y en un conocido POSITION. Se necesita una búsqueda secuencial para buscar un elemento por valor o índice. Esta búsqueda puede ser lenta si la lista es larga.

CObList incorpora la macro para admitir la IMPLEMENT_SERIAL serialización y el volcado de sus elementos. Si una lista de CObject punteros se almacena en un archivo, ya sea con un operador de inserción sobrecargado o con la Serialize función miembro, cada CObject elemento se serializa a su vez.

Si necesita un volcado de memoria de elementos individuales CObject en la lista, debe establecer la profundidad del contexto de volcado en 1 o superior.

Cuando se elimina un CObList objeto o cuando se quitan sus elementos, solo se quitan los CObject punteros, no los objetos a los que hacen referencia.

Puede derivar sus propias clases de CObList. La nueva clase de lista, diseñada para contener punteros a objetos derivados de CObject, agrega nuevos miembros de datos y nuevas funciones miembro. Tenga en cuenta que la lista resultante no es estrictamente segura, ya que permite la inserción de cualquier CObject puntero.

Nota:

Debe usar la IMPLEMENT_SERIAL macro en la implementación de la clase derivada si pretende serializar la lista.

Para obtener más información sobre el uso CObListde , consulte el artículo Colecciones.

Jerarquía de herencia

CObject

CObList

Requisitos

Encabezado: afxcoll.h

CObList::AddHead

Agrega un nuevo elemento o lista de elementos al encabezado de esta lista.

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

Parámetros

newElement
Puntero CObject que se va a agregar a esta lista.

pNewList
Puntero a otra CObList lista. Los elementos de pNewList se agregarán a esta lista.

Valor devuelto

La primera versión devuelve el POSITION valor del elemento recién insertado.

En la tabla siguiente se muestran otras funciones miembro similares a CObList::AddHead.

Class Función miembro
CPtrList POSITION AddHead( void * newElement );

void AddHead( CPtrList * pNewList );
CStringList POSITION AddHead(const CString& newElement );

POSITION AddHead(LPCTSTR newElement );

void AddHead(CStringList * pNewList );

Observaciones

La lista puede estar vacía antes de la operación.

Example

Consulte CObList::CObList para obtener una lista de la CAge clase .

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      

Los resultados de este programa son los siguientes:

AddHead example: A CObList with 2 elements
a CAge at $44A8 40
a CAge at $442A 21

CObList::AddTail

Agrega un nuevo elemento o lista de elementos al final de esta lista.

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

Parámetros

newElement
Puntero CObject que se va a agregar a esta lista.

pNewList
Puntero a otra CObList lista. Los elementos de pNewList se agregarán a esta lista.

Valor devuelto

La primera versión devuelve el POSITION valor del elemento recién insertado.

Observaciones

La lista puede estar vacía antes de la operación.

En la tabla siguiente se muestran otras funciones miembro similares a CObList::AddTail.

Class Función miembro
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 para obtener una lista de la CAge clase .

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      

Los resultados de este programa son los siguientes:

AddTail example: A CObList with 2 elements
a CAge at $444A 21
a CAge at $4526 40

CObList::CObList

Construye una lista de punteros vacía CObject .

CObList(INT_PTR nBlockSize = 10);

Parámetros

nBlockSize
Granularidad de asignación de memoria para extender la lista.

Observaciones

A medida que crece la lista, la memoria se asigna en unidades de nBlockSize entradas. Si se produce un error en la asignación de memoria, se produce una CMemoryException excepción .

En la tabla siguiente se muestran otras funciones miembro similares a CObList::CObList.

Class Función miembro
CPtrList CPtrList( INT_PTR nBlockSize = 10 );
CStringList CStringList( INT_PTR nBlockSize = 10 );

Example

A continuación se muestra una lista de la CObjectclase CAge derivada de que se usa en todos los ejemplos de colección:

// 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
};

A continuación se muestra un ejemplo de uso del CObList constructor:

CObList list(20);  // List on the stack with blocksize = 20.

CObList* plist = new CObList; // List on the heap with default 
                              // blocksize.         

CObList::Find

Busca secuencialmente la lista para buscar el primer CObject puntero que coincida con el puntero especificado CObject .

POSITION Find(
    CObject* searchValue,
    POSITION startAfter = NULL) const;

Parámetros

searchValue
Puntero de objeto que se va a encontrar en esta lista.

startAfter
Posición inicial de la búsqueda.

Valor devuelto

Valor POSITION que se puede usar para la recuperación de iteración o puntero de objeto; NULL si no se encuentra el objeto.

Observaciones

Tenga en cuenta que se comparan los valores de puntero, no el contenido de los objetos.

En la tabla siguiente se muestran otras funciones miembro similares a CObList::Find.

Class Función miembro
CPtrList POSITION Find( void *searchValue , POSITION startAfter = NULL ) const;
CStringList POSITION Find( LPCTSTR searchValue , POSITION startAfter = NULL ) const;

Example

Consulte CObList::CObList para obtener una lista de la CAge clase .

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 el valor de nIndex como índice en la lista.

POSITION FindIndex(INT_PTR nIndex) const;

Parámetros

nIndex
Índice de base cero del elemento de lista que se va a encontrar.

Valor devuelto

Valor POSITION que se puede usar para la iteración o la recuperación del puntero de objeto; NULL si nIndex es demasiado grande. (El marco genera una aserción si nIndex es negativa).

Observaciones

Inicia un examen secuencial desde el encabezado de la lista y se detiene en el elemento.

En la tabla siguiente se muestran otras funciones miembro similares a CObList::FindIndex.

Class Función miembro
CPtrList POSITION FindIndex( INT_PTR nIndex ) const;
CStringList POSITION FindIndex( INT_PTR nIndex ) const;

Example

Consulte CObList::CObList para obtener una lista de la CAge clase .

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 variable de tipo POSITION es una clave para la lista.

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

Parámetros

position
Valor POSITION devuelto por una llamada de función miembro o Find anteriorGetHeadPosition.

Valor devuelto

Consulte la descripción del valor devuelto para GetHead.

Observaciones

No es lo mismo que un índice y no puede operar en un POSITION valor usted mismo. GetAt recupera el CObject puntero asociado a una posición determinada.

Debe asegurarse de que el POSITION valor representa una posición válida en la lista. Si no es válido, la versión de depuración de la biblioteca microsoft Foundation Class afirma.

En la tabla siguiente se muestran otras funciones miembro similares a CObList::GetAt.

Class Función miembro
CPtrList const void*& GetAt( POSITION position ) const;

void*& GetAt( POSITION position );
CStringList const CString& GetAt( POSITION position ) const;

CString& GetAt( POSITION position );

Example

Vea el ejemplo de FindIndex.

CObList::GetCount

Obtiene el número de elementos de esta lista.

INT_PTR GetCount() const;

Valor devuelto

Valor entero que contiene el recuento de elementos.

En la tabla siguiente se muestran otras funciones miembro similares a CObList::GetCount.

Class Función miembro
CPtrList INT_PTR GetCount( ) const;
CStringList INT_PTR GetCount( ) const;

Example

Consulte CObList::CObList para obtener una lista de la CAge clase .

CObList list;

list.AddHead(new CAge(21));
list.AddHead(new CAge(40)); // List now contains (40, 21).
ASSERT(list.GetCount() == 2);

CObList::GetHead

Obtiene el CObject puntero que representa el elemento principal de esta lista.

CObject*& GetHead();
const CObject*& GetHead() const;

Valor devuelto

Si se accede a la lista a través de un puntero a , const CObListGetHead devuelve un CObject puntero. Esto permite que la función se use solo en el lado derecho de una instrucción de asignación y, por tanto, protege la lista de modificaciones.

Si se accede directamente a la lista o a través de un puntero a , CObListGetHead devuelve una referencia a un CObject puntero. Esto permite que la función se use en cualquier lado de una instrucción de asignación y, por tanto, permite modificar las entradas de lista.

Observaciones

Debe asegurarse de que la lista no está vacía antes de llamar a GetHead. Si la lista está vacía, la versión de depuración de la biblioteca microsoft Foundation Class afirma. Use IsEmpty para comprobar que la lista contiene elementos.

En la tabla siguiente se muestran otras funciones miembro similares a CObList::GetHead.

Class Función miembro
CPtrList const void*& GetHead( ) const; void*& GetHead( );
CStringList const CString& GetHead( ) const; CString& GetHead( );

Example

Consulte CObList::CObList para obtener una lista de la CAge clase .

En el ejemplo siguiente se muestra el uso de GetHead en el lado izquierdo de una instrucción de asignación.

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

Obtiene la posición del elemento principal de esta lista.

POSITION GetHeadPosition() const;

Valor devuelto

Valor POSITION que se puede usar para la recuperación de iteración o puntero de objeto; NULL si la lista está vacía.

En la tabla siguiente se muestran otras funciones miembro similares a CObList::GetHeadPosition.

Class Función miembro
CPtrList POSITION GetHeadPosition( ) const;
CStringList POSITION GetHeadPosition( ) const;

Example

Consulte CObList::CObList para obtener una lista de la CAge clase .

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

Obtiene el elemento de lista identificado por rPositiony, a continuación, establece rPosition en el POSITION valor de la entrada siguiente de la lista.

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

Parámetros

rPosition
Referencia a un POSITION valor devuelto por una llamada anterior GetNextde función miembro , GetHeadPositionu otra.

Valor devuelto

Consulte la descripción del valor devuelto para GetHead.

Observaciones

Puede usar GetNext en un bucle de iteración hacia delante si establece la posición inicial con una llamada a GetHeadPosition o Find.

Debe asegurarse de que el POSITION valor representa una posición válida en la lista. Si no es válido, la versión de depuración de la biblioteca microsoft Foundation Class afirma.

Si el elemento recuperado es el último de la lista, el nuevo valor de rPosition se establece NULLen .

Es posible quitar un elemento durante una iteración. Vea el ejemplo de RemoveAt.

Nota:

A partir de MFC 8.0, la versión const de este método ha cambiado para devolver const CObject* en lugar de const CObject*&. Este cambio se realizó para que el compilador se ajuste al estándar de C++.

En la tabla siguiente se muestran otras funciones miembro similares a CObList::GetNext.

Class Función miembro
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 para obtener una lista de la CAge clase .

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      

Los resultados de este programa son los siguientes:

a CAge at $479C 40
a CAge at $46C0 21

CObList::GetPrev

Obtiene el elemento de lista identificado por rPositiony, a continuación, establece rPosition en el POSITION valor de la entrada anterior de la lista.

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

Parámetros

rPosition
Referencia a un POSITION valor devuelto por una llamada de función miembro anterior GetPrev u otra.

Valor devuelto

Consulte la descripción del valor devuelto para GetHead.

Observaciones

Puede usar GetPrev en un bucle de iteración inversa si establece la posición inicial con una llamada a GetTailPosition o Find.

Debe asegurarse de que el POSITION valor representa una posición válida en la lista. Si no es válido, la versión de depuración de la biblioteca microsoft Foundation Class afirma.

Si el elemento recuperado es el primero de la lista, el nuevo valor de rPosition se establece NULLen .

Nota:

A partir de MFC 8.0, la versión const de este método ha cambiado para devolver const CObject* en lugar de const CObject*&. Este cambio se realizó para que el compilador se ajuste al estándar de C++.

En la tabla siguiente se muestran otras funciones miembro similares a CObList::GetPrev.

Class Función miembro
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 para obtener una lista de la CAge clase .

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
}

Los resultados de este programa son los siguientes:

a CAge at $421C 21
a CAge at $421C 40

CObList::GetSize

Devuelve el número de elementos de lista.

INT_PTR GetSize() const;

Valor devuelto

Número de elementos de la lista.

Observaciones

Llame a este método para recuperar el número de elementos de la lista.

En la tabla siguiente se muestran otras funciones miembro similares a CObList::GetSize.

Class Función miembro
CPtrList INT_PTR GetSize( ) const;
CStringList INT_PTR GetSize( ) const;

Example

Consulte CObList::CObList para obtener una lista de la CAge clase .

CObList list;

list.AddHead(new CAge(21));
list.AddHead(new CAge(40)); // List now contains (40, 21).
ASSERT(list.GetSize() == 2);

CObList::GetTail

Obtiene el CObject puntero que representa el elemento de cola de esta lista.

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

Valor devuelto

Consulte la descripción del valor devuelto para GetHead.

Observaciones

Debe asegurarse de que la lista no está vacía antes de llamar a GetTail. Si la lista está vacía, la versión de depuración de la biblioteca microsoft Foundation Class afirma. Use IsEmpty para comprobar que la lista contiene elementos.

En la tabla siguiente se muestran otras funciones miembro similares a CObList::GetTail.

Class Función miembro
CPtrList const void*& GetTail( ) const; void*& GetTail( );
CStringList const CString& GetTail( ) const; CString& GetTail( );

Example

Consulte CObList::CObList para obtener una lista de la CAge clase .

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

Obtiene la posición del elemento de cola de esta lista; NULL si la lista está vacía.

POSITION GetTailPosition() const;

Valor devuelto

Valor POSITION que se puede usar para la recuperación de iteración o puntero de objeto; NULL si la lista está vacía.

En la tabla siguiente se muestran otras funciones miembro similares a CObList::GetTailPosition.

Class Función miembro
CPtrList POSITION GetTailPosition( ) const;
CStringList POSITION GetTailPosition( ) const;

Example

Consulte CObList::CObList para obtener una lista de la CAge clase .

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

Agrega un elemento a esta lista después del elemento en la posición especificada.

POSITION InsertAfter(
    POSITION position,
    CObject* newElement);

Parámetros

position
Valor POSITION devuelto por una llamada de función miembro , GetPrevo Find anteriorGetNext.

newElement
Puntero de objeto que se va a agregar a esta lista.

En la tabla siguiente se muestran otras funciones miembro similares a CObList::InsertAfter.

Class Función miembro
CPtrList POSITION InsertAfter( POSITION position , void * newElement );
CStringList POSITION InsertAfter( POSITION position , const CString& newElement );

POSITION InsertAfter( POSITION position , LPCTSTR newElement );

Valor devuelto

Valor POSITION que es el mismo que el position parámetro .

Example

Consulte CObList::CObList para obtener una lista de la CAge clase .

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

Los resultados de este programa son los siguientes:

InsertAfter example: A CObList with 3 elements
a CAge at $4A44 40
a CAge at $4A64 65
a CAge at $4968 21

CObList::InsertBefore

Agrega un elemento a esta lista antes del elemento en la posición especificada.

POSITION InsertBefore(
    POSITION position,
    CObject* newElement);

Parámetros

position
Valor POSITION devuelto por una llamada de función miembro , GetPrevo Find anteriorGetNext.

newElement
Puntero de objeto que se va a agregar a esta lista.

Valor devuelto

Valor POSITION que se puede usar para la recuperación de iteración o puntero de objeto; NULL si la lista está vacía.

En la tabla siguiente se muestran otras funciones miembro similares a CObList::InsertBefore.

Class Función miembro
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 para obtener una lista de la CAge clase .

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      

Los resultados de este programa son los siguientes:

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 si esta lista no contiene elementos.

BOOL IsEmpty() const;

Valor devuelto

Distinto de cero si esta lista está vacía; de lo contrario, 0.

En la tabla siguiente se muestran otras funciones miembro similares a CObList::IsEmpty.

Class Función miembro
CPtrList BOOL IsEmpty( ) const;
CStringList BOOL IsEmpty( ) const;

Example

Vea el ejemplo de RemoveAll.

CObList::RemoveAll

Quita todos los elementos de esta lista y libera la memoria asociada CObList .

void RemoveAll();

Observaciones

No se genera ningún error si la lista ya está vacía.

Cuando se quitan elementos de , CObListse quitan los punteros de objeto de la lista. Es su responsabilidad eliminar los propios objetos.

En la tabla siguiente se muestran otras funciones miembro similares a CObList::RemoveAll.

Class Función miembro
CPtrList void RemoveAll( );
CStringList void RemoveAll( );

Example

Consulte CObList::CObList para obtener una lista de la CAge clase .

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

Quita el elemento especificado de esta lista.

void RemoveAt(POSITION position);

Parámetros

position
Posición del elemento que se va a quitar de la lista.

Observaciones

Cuando se quita un elemento de , CObListse quita el puntero de objeto de la lista. Es su responsabilidad eliminar los propios objetos.

Debe asegurarse de que el POSITION valor representa una posición válida en la lista. Si no es válido, la versión de depuración de la biblioteca microsoft Foundation Class afirma.

En la tabla siguiente se muestran otras funciones miembro similares a CObList::RemoveAt.

Class Función miembro
CPtrList void RemoveAt( POSITION position );
CStringList void RemoveAt( POSITION position );

Example

Tenga cuidado al quitar un elemento durante una iteración de lista. En el ejemplo siguiente se muestra una técnica de eliminación que garantiza un valor válido POSITION para GetNext.

Consulte CObList::CObList para obtener una lista de la CAge clase .

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      

Los resultados de este programa son los siguientes:

RemoveAt example: A CObList with 2 elements

a CAge at $4C1E 65

a CAge at $4B22 21

CObList::RemoveHead

Quita el elemento del encabezado de la lista y devuelve un puntero a él.

CObject* RemoveHead();

Valor devuelto

Puntero CObject anteriormente al principio de la lista.

Observaciones

Debe asegurarse de que la lista no está vacía antes de llamar a RemoveHead. Si la lista está vacía, la versión de depuración de la biblioteca microsoft Foundation Class afirma. Use IsEmpty para comprobar que la lista contiene elementos.

En la tabla siguiente se muestran otras funciones miembro similares a CObList::RemoveHead.

Class Función miembro
CPtrList void* RemoveHead( );
CStringList CString RemoveHead( );

Example

Consulte CObList::CObList para obtener una lista de la CAge clase .

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

Quita el elemento de la cola de la lista y devuelve un puntero a él.

CObject* RemoveTail();

Valor devuelto

Puntero al objeto que estaba en la cola de la lista.

Observaciones

Debe asegurarse de que la lista no está vacía antes de llamar a RemoveTail. Si la lista está vacía, la versión de depuración de la biblioteca microsoft Foundation Class afirma. Use IsEmpty para comprobar que la lista contiene elementos.

En la tabla siguiente se muestran otras funciones miembro similares a CObList::RemoveTail.

Class Función miembro
CPtrList void* RemoveTail( );
CStringList CString RemoveTail( );

Example

Consulte CObList::CObList para obtener una lista de la CAge clase .

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

Establece el elemento en una posición determinada.

void SetAt(
    POSITION pos,
    CObject* newElement);

Parámetros

pos
POSITION del elemento que se va a establecer.

newElement
Puntero CObject que se va a escribir en la lista.

Observaciones

Una variable de tipo POSITION es una clave para la lista. No es lo mismo que un índice y no puede operar en un POSITION valor usted mismo. SetAt escribe el CObject puntero en la posición especificada de la lista.

Debe asegurarse de que el POSITION valor representa una posición válida en la lista. Si no es válido, la versión de depuración de la biblioteca microsoft Foundation Class afirma.

En la tabla siguiente se muestran otras funciones miembro similares a CObList::SetAt.

Class Función miembro
CPtrList void SetAt( POSITION pos , const CString& newElement );
CStringList void SetAt( POSITION pos , LPCTSTR newElement );

Example

Consulte CObList::CObList para obtener una lista de la CAge clase .

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      

Los resultados de este programa son los siguientes:

SetAt example: A CObList with 2 elements
a CAge at $4D98 40
a CAge at $4DB8 65

Consulte también

CObject (clase)
Gráfico de jerarquías
CStringList (clase)
CPtrList (clase)