Clase CObList

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

Sintaxis

class CObList : public CObject

Miembros

Constructores públicos

Nombre Descripción
CObList::CObList Construye una lista vacía para punteros CObject.

Métodos públicos

Nombre Descripción
CObList::AddHead Agrega un elemento (o todos los elementos de otra lista) al principio de la lista (crea un principio nuevo).
CObList::AddTail Agrega un elemento (o todos los elementos de otra lista) al final de la lista (crea un final nuevo).
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 basado en cero.
CObList::GetAt Obtiene el elemento en una posición determinada.
CObList::GetCount Devuelve el número de elementos en esta lista.
CObList::GetHead Devuelve el elemento principal de la lista (no puede estar vacío).
CObList::GetHeadPosition Devuelve la posición del elemento de encabezado de la lista.
CObList::GetNext Obtiene el siguiente elemento para iterar.
CObList::GetPrev Obtiene el elemento anterior para su iteración.
CObList::GetSize Devuelve el número de elementos en 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 del final de la lista.
CObList::InsertAfter Inserta un elemento nuevo después de una posición determinada.
CObList::InsertBefore Inserta un elemento nuevo 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 principio de la lista.
CObList::RemoveTail Quita el elemento del final de la lista.
CObList::SetAt Establece el elemento en una posición determinada.

Comentarios

Las listas CObList se comportan como listas doblemente vinculadas.

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

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

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

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

Cuando se elimina un objeto CObList, o cuando se quitan sus elementos, solo se quitan los punteros CObject, 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 puntero CObject.

Nota:

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

Para más información sobre cómo usar CObList, consulte el artículo Colecciones.

Jerarquía de herencia

CObject

CObList

Requisitos

Encabezadoafxcoll.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 lista CObList. Los elementos de pNewList se agregarán a esta lista.

Valor devuelto

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

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

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

Comentarios

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

Ejemplo

Consulte CObList::CObList para una lista de la clase 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      

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 lista CObList. Los elementos de pNewList se agregarán a esta lista.

Valor devuelto

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

Comentarios

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

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

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

Ejemplo

Consulte CObList::CObList para una lista de la clase 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      

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 CObject vacía.

CObList(INT_PTR nBlockSize = 10);

Parámetros

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

Comentarios

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

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

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

Ejemplo

A continuación, se muestra una lista de la clase CAge derivada de CObject que se usa en todos los ejemplos de la 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 constructor CObList:

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 en la lista para buscar el primer puntero CObject que coincida con el puntero CObject especificado.

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

Parámetros

searchValue
Puntero de objeto que se debe 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 puntero de objeto o iteración; NULL si no se encuentra el objeto.

Comentarios

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.

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

Ejemplo

Consulte CObList::CObList para una lista de la clase 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 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 buscar.

Valor devuelto

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

Comentarios

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

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

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

Ejemplo

Consulte CObList::CObList para una lista de la clase 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

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 anterior GetHeadPosition o Find.

Valor devuelto

Consulte la descripción del valor devuelto para GetHead.

Comentarios

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

Debe asegurarse de que el valor POSITION representa una posición válida en la lista. Si no es válida, se impone la versión de depuración de la biblioteca MFC (Microsoft Foundation Class).

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

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

Ejemplo

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.

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

Ejemplo

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

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 puntero CObject que representa el elemento de encabezado de esta lista.

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

Valor devuelto

Si se accede a la lista a través de un puntero const CObList, GetHead devuelve un puntero CObject. Esto permite usar la función solo en el lado derecho de una instrucción de asignación, lo que protege la lista frente a modificaciones.

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

Comentarios

Debe asegurarse de que la lista no esté vacía antes de llamar a GetHead. Si lo está, se impone la versión de depuración de la biblioteca MFC (Microsoft Foundation Class). Use IsEmpty para comprobar que la lista contiene elementos.

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

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

Ejemplo

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

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 del encabezado de esta lista.

POSITION GetHeadPosition() const;

Valor devuelto

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

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

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

Ejemplo

Consulte CObList::CObList para una lista de la clase 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

Obtiene el elemento de la lista identificado por rPosition y, luego, establece rPosition en el valor POSITION de la entrada siguiente de la lista.

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

Parámetros

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

Valor devuelto

Consulte la descripción del valor devuelto para GetHead.

Comentarios

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 valor POSITION representa una posición válida en la lista. Si no es válida, se impone la versión de depuración de la biblioteca MFC (Microsoft Foundation Class).

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

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.

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

Ejemplo

Consulte CObList::CObList para una lista de la clase 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      

Los resultados de este programa son los siguientes:

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

CObList::GetPrev

Obtiene el elemento de la lista identificado por rPosition y, luego, establece rPosition en el valor POSITION de la entrada anterior de la lista.

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

Parámetros

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

Valor devuelto

Consulte la descripción del valor devuelto para GetHead.

Comentarios

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 valor POSITION representa una posición válida en la lista. Si no es válida, se impone la versión de depuración de la biblioteca MFC (Microsoft Foundation Class).

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

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.

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

Ejemplo

Consulte CObList::CObList para una lista de la clase 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
}

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

El número de elementos de la lista.

Comentarios

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.

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

Ejemplo

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

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 puntero CObject que representa el elemento del final de esta lista.

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

Valor devuelto

Consulte la descripción del valor devuelto para GetHead.

Comentarios

Debe asegurarse de que la lista no esté vacía antes de llamar a GetTail. Si lo está, se impone la versión de depuración de la biblioteca MFC (Microsoft Foundation Class). Use IsEmpty para comprobar que la lista contiene elementos.

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

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

Ejemplo

Consulte CObList::CObList para una lista de la clase 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

Obtiene la posición del elemento del final 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 puntero de objeto o iteración; NULL si la lista está vacía.

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

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

Ejemplo

Consulte CObList::CObList para una lista de la clase 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

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 llama de función miembro anterior GetNext, GetPrev o Find.

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.

Clase 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 parámetro position.

Ejemplo

Consulte CObList::CObList para una lista de la clase 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

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 delante del elemento en la posición especificada.

POSITION InsertBefore(
    POSITION position,
    CObject* newElement);

Parámetros

position
Valor POSITION devuelto por una llama de función miembro anterior GetNext, GetPrev o Find.

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 puntero de objeto o iteración; NULL si la lista está vacía.

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

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

POSITION InsertBefore( POSITION position , LPCTSTR newElement );

Ejemplo

Consulte CObList::CObList para una lista de la clase 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      

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 ningún elemento.

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.

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

Ejemplo

Vea el ejemplo de RemoveAll.

CObList::RemoveAll

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

void RemoveAll();

Comentarios

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

Cuando se quitan elementos de una instancia de CObList, se quitan los punteros de objeto de la lista. Es su responsabilidad eliminar los objetos en sí.

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

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

Ejemplo

Consulte CObList::CObList para una lista de la clase 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

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.

Comentarios

Cuando se quita un elemento de una instancia de CObList, se quitan los punteros de objeto de la lista. Es su responsabilidad eliminar los objetos en sí.

Debe asegurarse de que el valor POSITION representa una posición válida en la lista. Si no es válida, se impone la versión de depuración de la biblioteca MFC (Microsoft Foundation Class).

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

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

Ejemplo

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

Consulte CObList::CObList para una lista de la clase 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      

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 que anteriormente se encontraba en el encabezado de la lista.

Comentarios

Debe asegurarse de que la lista no esté vacía antes de llamar a RemoveHead. Si lo está, se impone la versión de depuración de la biblioteca MFC (Microsoft Foundation Class). Use IsEmpty para comprobar que la lista contiene elementos.

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

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

Ejemplo

Consulte CObList::CObList para una lista de la clase 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

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.

Comentarios

Debe asegurarse de que la lista no esté vacía antes de llamar a RemoveTail. Si lo está, se impone la versión de depuración de la biblioteca MFC (Microsoft Foundation Class). Use IsEmpty para comprobar que la lista contiene elementos.

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

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

Ejemplo

Consulte CObList::CObList para una lista de la clase 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

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.

Comentarios

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 puntero CObject en la posición especificada de la lista.

Debe asegurarse de que el valor POSITION representa una posición válida en la lista. Si no es válida, se impone la versión de depuración de la biblioteca MFC (Microsoft Foundation Class).

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

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

Ejemplo

Consulte CObList::CObList para una lista de la clase 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      

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)