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