La classe CObList
Prend en charge les listes ordonnées de pointeurs non uniques CObject
accessibles séquentiellement ou par valeur de pointeur.
Syntaxe
class CObList : public CObject
Membres
Constructeurs publics
Nom | Description |
---|---|
CObList::CObList |
Construit une liste vide pour CObject les pointeurs. |
Méthodes publiques
Nom | Description |
---|---|
CObList::AddHead |
Ajoute un élément (ou tous les éléments d’une autre liste) à la tête de la liste (fait un nouveau chef). |
CObList::AddTail |
Ajoute un élément (ou tous les éléments d’une autre liste) à la fin de la liste (fait une nouvelle queue). |
CObList::Find |
Obtient la position d’un élément spécifié par la valeur du pointeur. |
CObList::FindIndex |
Obtient la position d’un élément spécifié par un index de base zéro. |
CObList::GetAt |
Obtient l’élément à une position donnée. |
CObList::GetCount |
Retourne le nombre d’éléments de cette liste. |
CObList::GetHead |
Renvoie l’élément principal de la liste (ne peut pas être vide). |
CObList::GetHeadPosition |
Retourne la position de l’élément principal de la liste. |
CObList::GetNext |
Obtient l’élément suivant pour itérer. |
CObList::GetPrev |
Obtient l’élément précédent pour l’itération. |
CObList::GetSize |
Retourne le nombre d’éléments de cette liste. |
CObList::GetTail |
Retourne l’élément tail de la liste (ne peut pas être vide). |
CObList::GetTailPosition |
Retourne la position de l’élément de fin de la liste. |
CObList::InsertAfter |
Insère un nouvel élément après une position donnée. |
CObList::InsertBefore |
Insère un nouvel élément avant une position donnée. |
CObList::IsEmpty |
Teste la condition de liste vide (aucun élément). |
CObList::RemoveAll |
Supprime tous les éléments de cette liste. |
CObList::RemoveAt |
Supprime un élément de cette liste, spécifié par position. |
CObList::RemoveHead |
Supprime l’élément de la tête de la liste. |
CObList::RemoveTail |
Supprime l’élément de la fin de la liste. |
CObList::SetAt |
Définit l’élément à une position donnée. |
Notes
CObList
les listes se comportent comme des listes doublement liées.
Une variable de type POSITION
est une clé pour la liste. Vous pouvez utiliser une POSITION
variable à la fois comme itérateur pour parcourir une liste de manière séquentielle et comme signet pour contenir un emplacement. Toutefois, une position n’est pas la même qu’un index.
L’insertion d’élément est très rapide à la tête de la liste, à la queue et à un connu POSITION
. Une recherche séquentielle est nécessaire pour rechercher un élément par valeur ou index. Cette recherche peut être lente si la liste est longue.
CObList
incorpore la macro IMPLEMENT_SERIAL
pour prendre en charge la sérialisation et le vidage de ses éléments. Si une liste de CObject
pointeurs est stockée dans une archive, avec un opérateur d’insertion surchargé ou avec la Serialize
fonction membre, chaque CObject
élément est sérialisé à son tour.
Si vous avez besoin d’un vidage d’éléments individuels CObject
dans la liste, vous devez définir la profondeur du contexte de vidage sur 1 ou supérieur.
Lorsqu’un CObList
objet est supprimé ou lorsque ses éléments sont supprimés, seuls les CObject
pointeurs sont supprimés, et non les objets qu’ils référencent.
Vous pouvez dériver vos propres classes de CObList
. Votre nouvelle classe de liste, conçue pour contenir des pointeurs vers des objets dérivés, ajoute de CObject
nouveaux membres de données et de nouvelles fonctions membres. Notez que la liste résultante n’est pas strictement sécurisée, car elle autorise l’insertion d’un CObject
pointeur.
Remarque
Vous devez utiliser la IMPLEMENT_SERIAL
macro dans l’implémentation de votre classe dérivée si vous envisagez de sérialiser la liste.
Pour plus d’informations sur l’utilisation CObList
, consultez l’article Collections.
Hiérarchie d'héritage
CObList
Spécifications
En-tête : afxcoll.h
CObList::AddHead
Ajoute un nouvel élément ou une liste d’éléments à la tête de cette liste.
POSITION AddHead(CObject* newElement);
void AddHead(CObList* pNewList);
Paramètres
newElement
Pointeur CObject
à ajouter à cette liste.
pNewList
Pointeur vers une autre CObList
liste. Les éléments inclus pNewList
seront ajoutés à cette liste.
Valeur de retour
La première version retourne la POSITION
valeur de l’élément nouvellement inséré.
Le tableau suivant présente d’autres fonctions membres similaires à CObList::AddHead
.
Classe | Fonction membre |
---|---|
CPtrList |
POSITION AddHead( void * newElement ); void AddHead( CPtrList * pNewList ); |
CStringList |
POSITION AddHead(const CString& newElement ); POSITION AddHead(LPCTSTR newElement ); void AddHead(CStringList * pNewList ); |
Notes
La liste peut être vide avant l’opération.
Exemple
Consultez CObList::CObList
la liste de la 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
Les résultats de ce programme sont les suivants :
AddHead example: A CObList with 2 elements
a CAge at $44A8 40
a CAge at $442A 21
CObList::AddTail
Ajoute un nouvel élément ou une liste d’éléments à la fin de cette liste.
POSITION AddTail(CObject* newElement);
void AddTail(CObList* pNewList);
Paramètres
newElement
Pointeur CObject
à ajouter à cette liste.
pNewList
Pointeur vers une autre CObList
liste. Les éléments inclus pNewList
seront ajoutés à cette liste.
Valeur de retour
La première version retourne la POSITION
valeur de l’élément nouvellement inséré.
Notes
La liste peut être vide avant l’opération.
Le tableau suivant présente d’autres fonctions membres similaires à CObList::AddTail
.
Classe | Fonction membre |
---|---|
CPtrList |
POSITION AddTail( void * newElement ); void AddTail( CPtrList * pNewList ); |
CStringList |
POSITION AddTail( const CString& newElement ); POSITION AddTail( LPCTSTR newElement ); void AddTail( CStringList * pNewList ); |
Exemple
Consultez CObList::CObList
la liste de la 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
Les résultats de ce programme sont les suivants :
AddTail example: A CObList with 2 elements
a CAge at $444A 21
a CAge at $4526 40
CObList::CObList
Construit une liste de pointeurs vide CObject
.
CObList(INT_PTR nBlockSize = 10);
Paramètres
nBlockSize
Granularité d’allocation de mémoire pour étendre la liste.
Notes
À mesure que la liste augmente, la mémoire est allouée en unités d’entrées nBlockSize
. Si une allocation de mémoire échoue, une CMemoryException
valeur est levée.
Le tableau suivant présente d’autres fonctions membres similaires à CObList::CObList
.
Classe | Fonction membre |
---|---|
CPtrList |
CPtrList( INT_PTR nBlockSize = 10 ); |
CStringList |
CStringList( INT_PTR nBlockSize = 10 ); |
Exemple
Vous trouverez ci-dessous une liste de la CObject
classe CAge
dérivée utilisée dans tous les exemples de collection :
// 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
};
Voici un exemple d’utilisation du CObList
constructeur :
CObList list(20); // List on the stack with blocksize = 20.
CObList* plist = new CObList; // List on the heap with default
// blocksize.
CObList::Find
Recherche séquentiellement la liste pour rechercher le premier CObject
pointeur correspondant au pointeur spécifié CObject
.
POSITION Find(
CObject* searchValue,
POSITION startAfter = NULL) const;
Paramètres
searchValue
Pointeur d’objet à trouver dans cette liste.
startAfter
Position de début de la recherche.
Valeur de retour
Valeur POSITION
qui peut être utilisée pour l’itération ou la récupération du pointeur d’objet ; NULL
si l’objet est introuvable.
Notes
Notez que les valeurs de pointeur sont comparées, et non le contenu des objets.
Le tableau suivant présente d’autres fonctions membres similaires à CObList::Find
.
Classe | Fonction membre |
---|---|
CPtrList |
POSITION Find( void *searchValue , POSITION startAfter = NULL ) const; |
CStringList |
POSITION Find( LPCTSTR searchValue , POSITION startAfter = NULL ) const; |
Exemple
Consultez CObList::CObList
la liste de la 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
Utilise la valeur d’un nIndex
index dans la liste.
POSITION FindIndex(INT_PTR nIndex) const;
Paramètres
nIndex
Index de base zéro de l’élément de liste à trouver.
Valeur de retour
Valeur POSITION
qui peut être utilisée pour l’itération ou la récupération du pointeur d’objet ; NULL
si nIndex
elle est trop volumineuse. (L’infrastructure génère une assertion si nIndex
elle est négative.)
Notes
Il démarre une analyse séquentielle à partir de la tête de la liste, en s’arrêtant sur le nièmeélément.
Le tableau suivant présente d’autres fonctions membres similaires à CObList::FindIndex
.
Classe | Fonction membre |
---|---|
CPtrList |
POSITION FindIndex( INT_PTR nIndex ) const; |
CStringList |
POSITION FindIndex( INT_PTR nIndex ) const; |
Exemple
Consultez CObList::CObList
la liste de la 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
Une variable de type POSITION
est une clé pour la liste.
CObject*& GetAt(POSITION position);
const CObject*& GetAt(POSITION position) const;
Paramètres
position
Valeur POSITION
retournée par un appel de fonction membre ou Find
précédentGetHeadPosition
.
Valeur de retour
Consultez la description de la valeur de retour pour GetHead
.
Notes
Ce n’est pas le même qu’un index, et vous ne pouvez pas fonctionner sur une POSITION
valeur vous-même. GetAt
récupère le CObject
pointeur associé à une position donnée.
Vous devez vous assurer que votre POSITION
valeur représente une position valide dans la liste. S’il n’est pas valide, la version de débogage de la bibliothèque de classes Microsoft Foundation affirme.
Le tableau suivant présente d’autres fonctions membres similaires à CObList::GetAt
.
Classe | Fonction membre |
---|---|
CPtrList |
const void*& GetAt( POSITION position ) const; void*& GetAt( POSITION position ); |
CStringList |
const CString& GetAt( POSITION position ) const; CString& GetAt( POSITION position ); |
Exemple
Consultez l’exemple pour FindIndex
.
CObList::GetCount
Obtient le nombre d’éléments de cette liste.
INT_PTR GetCount() const;
Valeur de retour
Valeur entière contenant le nombre d’éléments.
Le tableau suivant présente d’autres fonctions membres similaires à CObList::GetCount
.
Classe | Fonction membre |
---|---|
CPtrList |
INT_PTR GetCount( ) const; |
CStringList |
INT_PTR GetCount( ) const; |
Exemple
Consultez CObList::CObList
la liste de la 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
Obtient le CObject
pointeur qui représente l’élément principal de cette liste.
CObject*& GetHead();
const CObject*& GetHead() const;
Valeur de retour
Si la liste est accessible via un pointeur vers un const CObList
, retourne GetHead
un CObject
pointeur. Cela permet à la fonction d’être utilisée uniquement sur le côté droit d’une instruction d’affectation et protège ainsi la liste contre la modification.
Si la liste est accessible directement ou par le biais d’un pointeur vers un CObList
, GetHead
retourne une référence à un CObject
pointeur. Cela permet à la fonction d’être utilisée sur l’un ou l’autre côté d’une instruction d’affectation et permet ainsi aux entrées de liste d’être modifiées.
Notes
Vous devez vous assurer que la liste n’est pas vide avant d’appeler GetHead
. Si la liste est vide, la version de débogage de la bibliothèque de classes Microsoft Foundation affirme. Permet IsEmpty
de vérifier que la liste contient des éléments.
Le tableau suivant présente d’autres fonctions membres similaires à CObList::GetHead
.
Classe | Fonction membre |
---|---|
CPtrList |
const void*& GetHead( ) const; void*& GetHead( ); |
CStringList |
const CString& GetHead( ) const; CString& GetHead( ); |
Exemple
Consultez CObList::CObList
la liste de la CAge
classe.
L’exemple suivant illustre l’utilisation du GetHead
côté gauche d’une instruction d’affectation.
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
Obtient la position de l’élément principal de cette liste.
POSITION GetHeadPosition() const;
Valeur de retour
Valeur POSITION
qui peut être utilisée pour l’itération ou la récupération du pointeur d’objet ; NULL
si la liste est vide.
Le tableau suivant présente d’autres fonctions membres similaires à CObList::GetHeadPosition
.
Classe | Fonction membre |
---|---|
CPtrList |
POSITION GetHeadPosition( ) const; |
CStringList |
POSITION GetHeadPosition( ) const; |
Exemple
Consultez CObList::CObList
la liste de la 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
Obtient l’élément de liste identifié par rPosition
, puis définit rPosition
la POSITION
valeur de l’entrée suivante dans la liste.
CObject*& GetNext(POSITION& rPosition);
const CObject* GetNext(POSITION& rPosition) const;
Paramètres
rPosition
Référence à une POSITION
valeur retournée par un appel de fonction membre précédent GetNext
, GetHeadPosition
ou autre.
Valeur de retour
Consultez la description de la valeur de retour pour GetHead
.
Notes
Vous pouvez utiliser GetNext
dans une boucle d’itération avant si vous établissez la position initiale avec un appel à GetHeadPosition
ou Find
.
Vous devez vous assurer que votre POSITION
valeur représente une position valide dans la liste. S’il n’est pas valide, la version de débogage de la bibliothèque de classes Microsoft Foundation affirme.
Si l’élément récupéré est le dernier de la liste, la nouvelle valeur rPosition
est définie NULL
sur .
Il est possible de supprimer un élément pendant une itération. Consultez l’exemple pour RemoveAt
.
Remarque
Depuis MFC 8.0, la version const de cette méthode a changé pour retourner const CObject*
au lieu de const CObject*&
. Cette modification a été apportée pour rendre le compilateur conforme à la norme C++.
Le tableau suivant présente d’autres fonctions membres similaires à CObList::GetNext
.
Classe | Fonction membre |
---|---|
CPtrList |
void*& GetNext( POSITION& rPosition ); const void* GetNext( POSITION& rPosition ) const; |
CStringList |
CString& GetNext( POSITION& rPosition ); const CString& GetNext( POSITION& rPosition ) const; |
Exemple
Consultez CObList::CObList
la liste de la 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
Les résultats de ce programme sont les suivants :
a CAge at $479C 40
a CAge at $46C0 21
CObList::GetPrev
Obtient l’élément de liste identifié par rPosition
, puis définit rPosition
la POSITION
valeur de l’entrée précédente dans la liste.
CObject*& GetPrev(POSITION& rPosition);
const CObject* GetPrev(POSITION& rPosition) const;
Paramètres
rPosition
Référence à une POSITION
valeur retournée par un appel de fonction membre précédent GetPrev
ou autre.
Valeur de retour
Consultez la description de la valeur de retour pour GetHead
.
Notes
Vous pouvez utiliser GetPrev
dans une boucle d’itération inverse si vous établissez la position initiale avec un appel à GetTailPosition
ou Find
.
Vous devez vous assurer que votre POSITION
valeur représente une position valide dans la liste. S’il n’est pas valide, la version de débogage de la bibliothèque de classes Microsoft Foundation affirme.
Si l’élément récupéré est le premier de la liste, la nouvelle valeur rPosition
est définie NULL
sur .
Remarque
Depuis MFC 8.0, la version const de cette méthode a changé pour retourner const CObject*
au lieu de const CObject*&
. Cette modification a été apportée pour rendre le compilateur conforme à la norme C++.
Le tableau suivant présente d’autres fonctions membres similaires à CObList::GetPrev
.
Classe | Fonction membre |
---|---|
CPtrList |
void*& GetPrev( POSITION& rPosition ); const void* GetPrev( POSITION& rPosition ) const; |
CStringList |
CString& GetPrev( POSITION& rPosition ); const CString& GetPrev( POSITION& rPosition ) const; |
Exemple
Consultez CObList::CObList
la liste de la 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
}
Les résultats de ce programme sont les suivants :
a CAge at $421C 21
a CAge at $421C 40
CObList::GetSize
Retourne le nombre d’éléments de liste.
INT_PTR GetSize() const;
Valeur de retour
Nombre d'éléments dans la liste.
Notes
Appelez cette méthode pour récupérer le nombre d’éléments de la liste.
Le tableau suivant présente d’autres fonctions membres similaires à CObList::GetSize
.
Classe | Fonction membre |
---|---|
CPtrList |
INT_PTR GetSize( ) const; |
CStringList |
INT_PTR GetSize( ) const; |
Exemple
Consultez CObList::CObList
la liste de la 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
Obtient le CObject
pointeur qui représente l’élément de fin de cette liste.
CObject*& GetTail();
const CObject*& GetTail() const;
Valeur de retour
Consultez la description de la valeur de retour pour GetHead
.
Notes
Vous devez vous assurer que la liste n’est pas vide avant d’appeler GetTail
. Si la liste est vide, la version de débogage de la bibliothèque de classes Microsoft Foundation affirme. Permet IsEmpty
de vérifier que la liste contient des éléments.
Le tableau suivant présente d’autres fonctions membres similaires à CObList::GetTail
.
Classe | Fonction membre |
---|---|
CPtrList |
const void*& GetTail( ) const; void*& GetTail( ); |
CStringList |
const CString& GetTail( ) const; CString& GetTail( ); |
Exemple
Consultez CObList::CObList
la liste de la 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
Obtient la position de l’élément tail de cette liste ; NULL
si la liste est vide.
POSITION GetTailPosition() const;
Valeur de retour
Valeur POSITION
qui peut être utilisée pour l’itération ou la récupération du pointeur d’objet ; NULL
si la liste est vide.
Le tableau suivant présente d’autres fonctions membres similaires à CObList::GetTailPosition
.
Classe | Fonction membre |
---|---|
CPtrList |
POSITION GetTailPosition( ) const; |
CStringList |
POSITION GetTailPosition( ) const; |
Exemple
Consultez CObList::CObList
la liste de la 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
Ajoute un élément à cette liste après l’élément à la position spécifiée.
POSITION InsertAfter(
POSITION position,
CObject* newElement);
Paramètres
position
Valeur POSITION
retournée par un appel de fonction membre ou Find
GetPrev
précédentGetNext
.
newElement
Pointeur d’objet à ajouter à cette liste.
Le tableau suivant présente d’autres fonctions membres similaires à CObList::InsertAfter
.
Classe | Fonction membre |
---|---|
CPtrList |
POSITION InsertAfter( POSITION position , void * newElement ); |
CStringList |
POSITION InsertAfter( POSITION position , const CString& newElement ); POSITION InsertAfter( POSITION position , LPCTSTR newElement ); |
Valeur de retour
Valeur POSITION
identique au position
paramètre.
Exemple
Consultez CObList::CObList
la liste de la 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
Les résultats de ce programme sont les suivants :
InsertAfter example: A CObList with 3 elements
a CAge at $4A44 40
a CAge at $4A64 65
a CAge at $4968 21
CObList::InsertBefore
Ajoute un élément à cette liste avant l’élément à la position spécifiée.
POSITION InsertBefore(
POSITION position,
CObject* newElement);
Paramètres
position
Valeur POSITION
retournée par un appel de fonction membre ou Find
GetPrev
précédentGetNext
.
newElement
Pointeur d’objet à ajouter à cette liste.
Valeur de retour
Valeur POSITION
qui peut être utilisée pour l’itération ou la récupération du pointeur d’objet ; NULL
si la liste est vide.
Le tableau suivant présente d’autres fonctions membres similaires à CObList::InsertBefore
.
Classe | Fonction membre |
---|---|
CPtrList |
POSITION InsertBefore( POSITION position , void * newElement ); |
CStringList |
POSITION InsertBefore( POSITION position , const CString& newElement ); POSITION InsertBefore( POSITION position , LPCTSTR newElement ); |
Exemple
Consultez CObList::CObList
la liste de la 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
Les résultats de ce programme sont les suivants :
InsertBefore example: A CObList with 3 elements
a CAge at $4AE2 40
a CAge at $4B02 65
a CAge at $49E6 21
CObList::IsEmpty
Indique si cette liste ne contient aucun élément.
BOOL IsEmpty() const;
Valeur de retour
Différent de zéro si cette liste est vide ; sinon 0.
Le tableau suivant présente d’autres fonctions membres similaires à CObList::IsEmpty
.
Classe | Fonction membre |
---|---|
CPtrList |
BOOL IsEmpty( ) const ; |
CStringList |
BOOL IsEmpty( ) const ; |
Exemple
Consultez l’exemple pour RemoveAll
.
CObList::RemoveAll
Supprime tous les éléments de cette liste et libère la mémoire associée CObList
.
void RemoveAll();
Notes
Aucune erreur n’est générée si la liste est déjà vide.
Lorsque vous supprimez des éléments d’un CObList
, vous supprimez les pointeurs d’objet de la liste. Il vous incombe de supprimer eux-mêmes les objets.
Le tableau suivant présente d’autres fonctions membres similaires à CObList::RemoveAll
.
Classe | Fonction membre |
---|---|
CPtrList |
void RemoveAll( ); |
CStringList |
void RemoveAll( ); |
Exemple
Consultez CObList::CObList
la liste de la 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
Supprime l’élément spécifié de cette liste.
void RemoveAt(POSITION position);
Paramètres
position
Position de l’élément à supprimer de la liste.
Notes
Lorsque vous supprimez un élément d’un CObList
élément, vous supprimez le pointeur d’objet de la liste. Il vous incombe de supprimer eux-mêmes les objets.
Vous devez vous assurer que votre POSITION
valeur représente une position valide dans la liste. S’il n’est pas valide, la version de débogage de la bibliothèque de classes Microsoft Foundation affirme.
Le tableau suivant présente d’autres fonctions membres similaires à CObList::RemoveAt
.
Classe | Fonction membre |
---|---|
CPtrList |
void RemoveAt( POSITION position ); |
CStringList |
void RemoveAt( POSITION position ); |
Exemple
Soyez prudent lors de la suppression d’un élément pendant une itération de liste. L’exemple suivant montre une technique de suppression qui garantit une valeur valide POSITION
pour GetNext
.
Consultez CObList::CObList
la liste de la 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
Les résultats de ce programme sont les suivants :
RemoveAt example: A CObList with 2 elements
a CAge at $4C1E 65
a CAge at $4B22 21
CObList::RemoveHead
Supprime l’élément de la tête de la liste et retourne un pointeur vers celui-ci.
CObject* RemoveHead();
Valeur de retour
Pointeur CObject
précédemment à la tête de la liste.
Notes
Vous devez vous assurer que la liste n’est pas vide avant d’appeler RemoveHead
. Si la liste est vide, la version de débogage de la bibliothèque de classes Microsoft Foundation affirme. Permet IsEmpty
de vérifier que la liste contient des éléments.
Le tableau suivant présente d’autres fonctions membres similaires à CObList::RemoveHead
.
Classe | Fonction membre |
---|---|
CPtrList |
void* RemoveHead( ); |
CStringList |
CString RemoveHead( ); |
Exemple
Consultez CObList::CObList
la liste de la 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
Supprime l’élément de la fin de la liste et retourne un pointeur vers celui-ci.
CObject* RemoveTail();
Valeur de retour
Pointeur vers l’objet qui se trouvait à la fin de la liste.
Notes
Vous devez vous assurer que la liste n’est pas vide avant d’appeler RemoveTail
. Si la liste est vide, la version de débogage de la bibliothèque de classes Microsoft Foundation affirme. Permet IsEmpty
de vérifier que la liste contient des éléments.
Le tableau suivant présente d’autres fonctions membres similaires à CObList::RemoveTail
.
Classe | Fonction membre |
---|---|
CPtrList |
void* RemoveTail( ); |
CStringList |
CString RemoveTail( ); |
Exemple
Consultez CObList::CObList
la liste de la 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
Définit l’élément à une position donnée.
void SetAt(
POSITION pos,
CObject* newElement);
Paramètres
pos
Élément POSITION
à définir.
newElement
Pointeur CObject
à écrire dans la liste.
Notes
Une variable de type POSITION
est une clé pour la liste. Ce n’est pas le même qu’un index, et vous ne pouvez pas fonctionner sur une POSITION
valeur vous-même. SetAt
écrit le CObject
pointeur à la position spécifiée dans la liste.
Vous devez vous assurer que votre POSITION
valeur représente une position valide dans la liste. S’il n’est pas valide, la version de débogage de la bibliothèque de classes Microsoft Foundation affirme.
Le tableau suivant présente d’autres fonctions membres similaires à CObList::SetAt
.
Classe | Fonction membre |
---|---|
CPtrList |
void SetAt( POSITION pos , const CString& newElement ); |
CStringList |
void SetAt( POSITION pos , LPCTSTR newElement ); |
Exemple
Consultez CObList::CObList
la liste de la 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
Les résultats de ce programme sont les suivants :
SetAt example: A CObList with 2 elements
a CAge at $4D98 40
a CAge at $4DB8 65
Voir aussi
CObject
Classe
Graphique hiérarchique
CStringList
Classe
CPtrList
Classe