CObList Klasa

Obsługuje uporządkowane listy nieudostępnianych CObject wskaźników sekwencyjnie lub według wartości wskaźnika.

Składnia

class CObList : public CObject

Członkowie

Konstruktory publiczne

Nazwa/nazwisko opis
CObList::CObList Tworzy pustą listę wskaźników CObject .

Metody publiczne

Nazwa/nazwisko opis
CObList::AddHead Dodaje element (lub wszystkie elementy na innej liście) do nagłówka listy (tworzy nową głowę).
CObList::AddTail Dodaje element (lub wszystkie elementy na innej liście) do końca listy (tworzy nowy ogon).
CObList::Find Pobiera położenie elementu określonego przez wartość wskaźnika.
CObList::FindIndex Pobiera pozycję elementu określonego przez indeks oparty na zerze.
CObList::GetAt Pobiera element na danej pozycji.
CObList::GetCount Zwraca liczbę elementów na tej liście.
CObList::GetHead Zwraca element główny listy (nie może być pusty).
CObList::GetHeadPosition Zwraca położenie elementu głównego listy.
CObList::GetNext Pobiera następny element do iteracji.
CObList::GetPrev Pobiera poprzedni element na potrzeby iteracji.
CObList::GetSize Zwraca liczbę elementów na tej liście.
CObList::GetTail Zwraca element końcowy listy (nie może być pusty).
CObList::GetTailPosition Zwraca położenie elementu końcowego listy.
CObList::InsertAfter Wstawia nowy element po danej pozycji.
CObList::InsertBefore Wstawia nowy element przed daną pozycją.
CObList::IsEmpty Testuje pusty warunek listy (brak elementów).
CObList::RemoveAll Usuwa wszystkie elementy z tej listy.
CObList::RemoveAt Usuwa element z tej listy określony przez pozycję.
CObList::RemoveHead Usuwa element z nagłówka listy.
CObList::RemoveTail Usuwa element z końca listy.
CObList::SetAt Ustawia element na danej pozycji.

Uwagi

CObList listy zachowują się jak listy połączone podwójnie.

Zmienna typu POSITION jest kluczem listy. Możesz użyć zmiennej POSITION zarówno jako iteratora, aby przechodzić sekwencyjnie listę, jak i jako zakładkę do przechowywania miejsca. Pozycja nie jest jednak taka sama jak indeks.

Wstawianie elementów jest bardzo szybkie na czele listy, na ogonie i przy znanym POSITION. Wyszukiwanie sekwencyjne jest niezbędne do wyszukania elementu według wartości lub indeksu. To wyszukiwanie może być powolne, jeśli lista jest długa.

CObListIMPLEMENT_SERIAL uwzględnia makro w celu wspierania serializacji i dumpingu jej elementów. Jeśli lista CObject wskaźników jest przechowywana w archiwum, z przeciążonym operatorem wstawiania lub z Serialize funkcją składową, każdy CObject element jest serializowany z kolei.

Jeśli potrzebujesz zrzutu poszczególnych CObject elementów na liście, musisz ustawić głębokość kontekstu zrzutu na 1 lub większą.

CObList Gdy obiekt zostanie usunięty lub gdy jego elementy zostaną usunięte, zostaną usunięte tylko CObject wskaźniki, a nie obiekty, do których się odwołują.

Możesz utworzyć własne klasy z klasy CObList. Nowa klasa listy zaprojektowana do przechowywania wskaźników do obiektów pochodzących z CObjectprogramu dodaje nowe elementy członkowskie danych i nowe funkcje składowe. Należy pamiętać, że wynikowa lista nie jest ściśle bezpieczna, ponieważ umożliwia wstawienie dowolnego CObject wskaźnika.

Uwaga

Jeśli zamierzasz serializować listę, musisz użyć makra IMPLEMENT_SERIAL w implementacji klasy pochodnej.

Aby uzyskać więcej informacji na temat korzystania z programu CObList, zobacz artykuł Kolekcje.

Hierarchia dziedziczenia

Cobject

CObList

Wymagania

Nagłówka:afxcoll.h

CObList::AddHead

Dodaje nowy element lub listę elementów do nagłówka tej listy.

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

Parametry

newElement
Wskaźnik CObject , który ma zostać dodany do tej listy.

pNewList
Wskaźnik do innej CObList listy. Elementy w pliku pNewList zostaną dodane do tej listy.

Wartość zwracana

Pierwsza wersja zwraca POSITION wartość nowo wstawionego elementu.

W poniższej tabeli przedstawiono inne funkcje składowe podobne do CObList::AddHead.

Klasa Funkcja elementów członkowskich
CPtrList POSITION AddHead( void * newElement );

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

POSITION AddHead(LPCTSTR newElement );

void AddHead(CStringList * pNewList );

Uwagi

Lista może być pusta przed operacją.

Przykład

Zobacz CObList::CObList , aby zapoznać się z listą CAge klasy.

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      

Wyniki z tego programu są następujące:

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

CObList::AddTail

Dodaje nowy element lub listę elementów do końca tej listy.

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

Parametry

newElement
Wskaźnik CObject , który ma zostać dodany do tej listy.

pNewList
Wskaźnik do innej CObList listy. Elementy w pliku pNewList zostaną dodane do tej listy.

Wartość zwracana

Pierwsza wersja zwraca POSITION wartość nowo wstawionego elementu.

Uwagi

Lista może być pusta przed operacją.

W poniższej tabeli przedstawiono inne funkcje składowe podobne do CObList::AddTail.

Klasa Funkcja elementów członkowskich
CPtrList POSITION AddTail( void * newElement );

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

POSITION AddTail( LPCTSTR newElement );

void AddTail( CStringList * pNewList );

Przykład

Zobacz CObList::CObList , aby zapoznać się z listą CAge klasy.

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      

Wyniki z tego programu są następujące:

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

CObList::CObList

Tworzy pustą CObject listę wskaźników.

CObList(INT_PTR nBlockSize = 10);

Parametry

nBlockSize
Stopień szczegółowości alokacji pamięci na potrzeby rozszerzania listy.

Uwagi

Wraz ze wzrostem listy pamięć jest przydzielana w jednostkach nBlockSize wpisów. Jeśli alokacja pamięci zakończy się niepowodzeniem, CMemoryException zostanie zgłoszony błąd.

W poniższej tabeli przedstawiono inne funkcje składowe podobne do CObList::CObList.

Klasa Funkcja elementów członkowskich
CPtrList CPtrList( INT_PTR nBlockSize = 10 );
CStringList CStringList( INT_PTR nBlockSize = 10 );

Przykład

Poniżej znajduje się lista klasy CAge pochodnej CObjectużywanej we wszystkich przykładach kolekcji:

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

Poniżej przedstawiono przykład użycia konstruktora CObList :

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

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

CObList::Find

Wyszukuje listę sekwencyjnie, aby znaleźć pierwszy CObject wskaźnik pasujący do określonego CObject wskaźnika.

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

Parametry

searchValue
Wskaźnik obiektu, który ma zostać znaleziony na tej liście.

startAfter
Pozycja początkowa wyszukiwania.

Wartość zwracana

POSITION Wartość, która może służyć do iteracji lub pobierania wskaźnika obiektu; NULL jeśli obiekt nie zostanie znaleziony.

Uwagi

Należy pamiętać, że wartości wskaźnika są porównywane, a nie zawartość obiektów.

W poniższej tabeli przedstawiono inne funkcje składowe podobne do CObList::Find.

Klasa Funkcja elementów członkowskich
CPtrList POSITION Find( void *searchValue , POSITION startAfter = NULL ) const;
CStringList POSITION Find( LPCTSTR searchValue , POSITION startAfter = NULL ) const;

Przykład

Zobacz CObList::CObList , aby zapoznać się z listą CAge klasy.

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

Używa wartości nIndex jako indeksu do listy.

POSITION FindIndex(INT_PTR nIndex) const;

Parametry

nIndex
Indeks na podstawie zera elementu listy, który ma zostać znaleziony.

Wartość zwracana

POSITION Wartość, która może służyć do iteracji lub pobierania wskaźnika obiektu; NULL jeśli nIndex jest zbyt duża. (Struktura generuje asercja, jeśli nIndex jest ujemna).

Uwagi

Spowoduje to uruchomienie sekwencyjnego skanowania z nagłówka listy, zatrzymując się na nelement.

W poniższej tabeli przedstawiono inne funkcje składowe podobne do CObList::FindIndex.

Klasa Funkcja elementów członkowskich
CPtrList POSITION FindIndex( INT_PTR nIndex ) const;
CStringList POSITION FindIndex( INT_PTR nIndex ) const;

Przykład

Zobacz CObList::CObList , aby zapoznać się z listą CAge klasy.

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

Zmienna typu POSITION jest kluczem listy.

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

Parametry

position
POSITION Wartość zwracana przez poprzednie GetHeadPosition wywołanie funkcji lub Find składowej.

Wartość zwracana

Zobacz opis wartości zwracanej dla elementu GetHead.

Uwagi

Nie jest to takie samo jak indeks i nie można samodzielnie działać na POSITION wartości. GetAtCObject pobiera wskaźnik skojarzony z daną pozycją.

Musisz upewnić się, że wartość POSITION reprezentuje prawidłową pozycję na liście. Jeśli jest on nieprawidłowy, oznacza to, że wersja debugowania biblioteki klas programu Microsoft Foundation jest asercyjna.

W poniższej tabeli przedstawiono inne funkcje składowe podobne do CObList::GetAt.

Klasa Funkcja elementów członkowskich
CPtrList const void*& GetAt( POSITION position ) const;

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

CString& GetAt( POSITION position );

Przykład

Zobacz przykład dla elementu FindIndex.

CObList::GetCount

Pobiera liczbę elementów na tej liście.

INT_PTR GetCount() const;

Wartość zwracana

Wartość całkowita zawierająca liczbę elementów.

W poniższej tabeli przedstawiono inne funkcje składowe podobne do CObList::GetCount.

Klasa Funkcja elementów członkowskich
CPtrList INT_PTR GetCount( ) const;
CStringList INT_PTR GetCount( ) const;

Przykład

Zobacz CObList::CObList , aby zapoznać się z listą CAge klasy.

CObList list;

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

CObList::GetHead

CObject Pobiera wskaźnik reprezentujący element główny tej listy.

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

Wartość zwracana

Jeśli dostęp do listy jest uzyskiwany za pośrednictwem wskaźnika do const CObListelementu , zwraca GetHeadCObject wskaźnik. Dzięki temu funkcja może być używana tylko po prawej stronie instrukcji przypisania, a tym samym chroni listę przed modyfikacją.

Jeśli dostęp do listy jest uzyskiwany bezpośrednio lub za pośrednictwem wskaźnika do CObListelementu , GetHead zwraca odwołanie do CObject wskaźnika. Dzięki temu funkcja może być używana po obu stronach instrukcji przypisania, a tym samym umożliwia modyfikowanie wpisów listy.

Uwagi

Przed wywołaniem metody GetHeadnależy upewnić się, że lista nie jest pusta. Jeśli lista jest pusta, zostanie asercyjna wersja debugowania biblioteki klas programu Microsoft Foundation. Użyj polecenia IsEmpty , aby sprawdzić, czy lista zawiera elementy.

W poniższej tabeli przedstawiono inne funkcje składowe podobne do CObList::GetHead.

Klasa Funkcja elementów członkowskich
CPtrList const void*& GetHead( ) const; void*& GetHead( );
CStringList const CString& GetHead( ) const; CString& GetHead( );

Przykład

Zobacz CObList::CObList , aby zapoznać się z listą CAge klasy.

W poniższym przykładzie pokazano użycie instrukcji GetHead przypisania po lewej stronie.

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

Pobiera pozycję elementu głównego tej listy.

POSITION GetHeadPosition() const;

Wartość zwracana

POSITION Wartość, która może służyć do iteracji lub pobierania wskaźnika obiektu; NULL jeśli lista jest pusta.

W poniższej tabeli przedstawiono inne funkcje składowe podobne do CObList::GetHeadPosition.

Klasa Funkcja elementów członkowskich
CPtrList POSITION GetHeadPosition( ) const;
CStringList POSITION GetHeadPosition( ) const;

Przykład

Zobacz CObList::CObList , aby zapoznać się z listą CAge klasy.

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

Pobiera element listy zidentyfikowany przez rPositionelement , a następnie ustawia rPosition wartość POSITION następnego wpisu na liście.

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

Parametry

rPosition
Odwołanie do POSITION wartości zwróconej przez poprzednie GetNextwywołanie funkcji , GetHeadPositionlub innego elementu członkowskiego.

Wartość zwracana

Zobacz opis wartości zwracanej dla elementu GetHead.

Uwagi

Można użyć GetNext w pętli iteracji przesyłania dalej, jeśli ustanowisz pozycję początkową z wywołaniem lub GetHeadPositionFind.

Musisz upewnić się, że wartość POSITION reprezentuje prawidłową pozycję na liście. Jeśli jest on nieprawidłowy, oznacza to, że wersja debugowania biblioteki klas programu Microsoft Foundation jest asercyjna.

Jeśli pobrany element jest ostatnim elementem na liście, nowa wartość parametru jest ustawiona rPosition na NULLwartość .

Podczas iteracji można usunąć element. Zobacz przykład dla elementu RemoveAt.

Uwaga

Od MFC 8.0 wersja const tej metody zmieniła się tak, aby zwracała const CObject* wartość zamiast const CObject*&. Ta zmiana została wprowadzona w celu dostosowania kompilatora do standardu C++.

W poniższej tabeli przedstawiono inne funkcje składowe podobne do CObList::GetNext.

Klasa Funkcja elementów członkowskich
CPtrList void*& GetNext( POSITION& rPosition );

const void* GetNext( POSITION& rPosition ) const;
CStringList CString& GetNext( POSITION& rPosition );

const CString& GetNext( POSITION& rPosition ) const;

Przykład

Zobacz CObList::CObList , aby zapoznać się z listą CAge klasy.

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      

Wyniki z tego programu są następujące:

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

CObList::GetPrev

Pobiera element listy zidentyfikowany przez rPositionelement , a następnie ustawia rPosition wartość POSITION poprzedniego wpisu na liście.

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

Parametry

rPosition
Odwołanie do POSITION wartości zwracanej przez poprzednie GetPrev lub inne wywołanie funkcji składowej.

Wartość zwracana

Zobacz opis wartości zwracanej dla elementu GetHead.

Uwagi

Można użyć GetPrev w pętli iteracji odwrotnej, jeśli ustanowisz pozycję początkową za pomocą wywołania metody GetTailPosition lub Find.

Musisz upewnić się, że wartość POSITION reprezentuje prawidłową pozycję na liście. Jeśli jest on nieprawidłowy, oznacza to, że wersja debugowania biblioteki klas programu Microsoft Foundation jest asercyjna.

Jeśli pobrany element jest pierwszym elementem na liście, nowa wartość parametru jest ustawiona rPosition na NULLwartość .

Uwaga

Od MFC 8.0 wersja const tej metody zmieniła się tak, aby zwracała const CObject* wartość zamiast const CObject*&. Ta zmiana została wprowadzona w celu dostosowania kompilatora do standardu C++.

W poniższej tabeli przedstawiono inne funkcje składowe podobne do CObList::GetPrev.

Klasa Funkcja elementów członkowskich
CPtrList void*& GetPrev( POSITION& rPosition );

const void* GetPrev( POSITION& rPosition ) const;
CStringList CString& GetPrev( POSITION& rPosition );

const CString& GetPrev( POSITION& rPosition ) const;

Przykład

Zobacz CObList::CObList , aby zapoznać się z listą CAge klasy.

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
}

Wyniki z tego programu są następujące:

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

CObList::GetSize

Zwraca liczbę elementów listy.

INT_PTR GetSize() const;

Wartość zwracana

Liczba elementów na liście.

Uwagi

Wywołaj tę metodę, aby pobrać liczbę elementów na liście.

W poniższej tabeli przedstawiono inne funkcje składowe podobne do CObList::GetSize.

Klasa Funkcja elementów członkowskich
CPtrList INT_PTR GetSize( ) const;
CStringList INT_PTR GetSize( ) const;

Przykład

Zobacz CObList::CObList , aby zapoznać się z listą CAge klasy.

CObList list;

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

CObList::GetTail

CObject Pobiera wskaźnik reprezentujący element końcowy tej listy.

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

Wartość zwracana

Zobacz opis wartości zwracanej dla elementu GetHead.

Uwagi

Przed wywołaniem metody GetTailnależy upewnić się, że lista nie jest pusta. Jeśli lista jest pusta, zostanie asercyjna wersja debugowania biblioteki klas programu Microsoft Foundation. Użyj polecenia IsEmpty , aby sprawdzić, czy lista zawiera elementy.

W poniższej tabeli przedstawiono inne funkcje składowe podobne do CObList::GetTail.

Klasa Funkcja elementów członkowskich
CPtrList const void*& GetTail( ) const; void*& GetTail( );
CStringList const CString& GetTail( ) const; CString& GetTail( );

Przykład

Zobacz CObList::CObList , aby zapoznać się z listą CAge klasy.

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

Pobiera położenie elementu końcowego tej listy; NULL jeśli lista jest pusta.

POSITION GetTailPosition() const;

Wartość zwracana

POSITION Wartość, która może służyć do iteracji lub pobierania wskaźnika obiektu; NULL jeśli lista jest pusta.

W poniższej tabeli przedstawiono inne funkcje składowe podobne do CObList::GetTailPosition.

Klasa Funkcja elementów członkowskich
CPtrList POSITION GetTailPosition( ) const;
CStringList POSITION GetTailPosition( ) const;

Przykład

Zobacz CObList::CObList , aby zapoznać się z listą CAge klasy.

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

Dodaje element do tej listy po elemecie w określonej pozycji.

POSITION InsertAfter(
    POSITION position,
    CObject* newElement);

Parametry

position
POSITION Wartość zwrócona przez poprzednie GetNextwywołanie funkcji , GetPrevlub Find składowej.

newElement
Wskaźnik obiektu, który ma zostać dodany do tej listy.

W poniższej tabeli przedstawiono inne funkcje składowe podobne do CObList::InsertAfter.

Klasa Funkcja elementów członkowskich
CPtrList POSITION InsertAfter( POSITION position , void * newElement );
CStringList POSITION InsertAfter( POSITION position , const CString& newElement );

POSITION InsertAfter( POSITION position , LPCTSTR newElement );

Wartość zwracana

POSITION Wartość, która jest taka sama jak position parametr.

Przykład

Zobacz CObList::CObList , aby zapoznać się z listą CAge klasy.

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

Wyniki z tego programu są następujące:

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

CObList::InsertBefore

Dodaje element do tej listy przed elementem na określonej pozycji.

POSITION InsertBefore(
    POSITION position,
    CObject* newElement);

Parametry

position
POSITION Wartość zwrócona przez poprzednie GetNextwywołanie funkcji , GetPrevlub Find składowej.

newElement
Wskaźnik obiektu, który ma zostać dodany do tej listy.

Wartość zwracana

POSITION Wartość, która może służyć do iteracji lub pobierania wskaźnika obiektu; NULL jeśli lista jest pusta.

W poniższej tabeli przedstawiono inne funkcje składowe podobne do CObList::InsertBefore.

Klasa Funkcja elementów członkowskich
CPtrList POSITION InsertBefore( POSITION position , void * newElement );
CStringList POSITION InsertBefore( POSITION position , const CString& newElement );

POSITION InsertBefore( POSITION position , LPCTSTR newElement );

Przykład

Zobacz CObList::CObList , aby zapoznać się z listą CAge klasy.

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      

Wyniki z tego programu są następujące:

InsertBefore example: A CObList with 3 elements
a CAge at $4AE2 40
a CAge at $4B02 65
a CAge at $49E6 21

CObList::IsEmpty

Wskazuje, czy ta lista nie zawiera żadnych elementów.

BOOL IsEmpty() const;

Wartość zwracana

Niezerowe, jeśli ta lista jest pusta; w przeciwnym razie 0.

W poniższej tabeli przedstawiono inne funkcje składowe podobne do CObList::IsEmpty.

Klasa Funkcja elementów członkowskich
CPtrList BOOL IsEmpty( ) const;
CStringList BOOL IsEmpty( ) const;

Przykład

Zobacz przykład dla elementu RemoveAll.

CObList::RemoveAll

Usuwa wszystkie elementy z tej listy i zwalnia skojarzona CObList pamięć.

void RemoveAll();

Uwagi

Jeśli lista jest już pusta, nie jest generowany żaden błąd.

Usunięcie elementów z CObListelementu spowoduje usunięcie wskaźników obiektów z listy. Użytkownik ponosi odpowiedzialność za usunięcie samych obiektów.

W poniższej tabeli przedstawiono inne funkcje składowe podobne do CObList::RemoveAll.

Klasa Funkcja elementów członkowskich
CPtrList void RemoveAll( );
CStringList void RemoveAll( );

Przykład

Zobacz CObList::CObList , aby zapoznać się z listą CAge klasy.

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

Usuwa określony element z tej listy.

void RemoveAt(POSITION position);

Parametry

position
Pozycja elementu, który ma zostać usunięty z listy.

Uwagi

Usunięcie elementu z CObListelementu spowoduje usunięcie wskaźnika obiektu z listy. Użytkownik ponosi odpowiedzialność za usunięcie samych obiektów.

Musisz upewnić się, że wartość POSITION reprezentuje prawidłową pozycję na liście. Jeśli jest on nieprawidłowy, oznacza to, że wersja debugowania biblioteki klas programu Microsoft Foundation jest asercyjna.

W poniższej tabeli przedstawiono inne funkcje składowe podobne do CObList::RemoveAt.

Klasa Funkcja elementów członkowskich
CPtrList void RemoveAt( POSITION position );
CStringList void RemoveAt( POSITION position );

Przykład

Podczas usuwania elementu podczas iteracji listy należy zachować ostrożność. W poniższym przykładzie pokazano technikę usuwania, która gwarantuje prawidłową POSITION wartość dla elementu GetNext.

Zobacz CObList::CObList , aby zapoznać się z listą CAge klasy.

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      

Wyniki z tego programu są następujące:

RemoveAt example: A CObList with 2 elements

a CAge at $4C1E 65

a CAge at $4B22 21

CObList::RemoveHead

Usuwa element z nagłówka listy i zwraca do niego wskaźnik.

CObject* RemoveHead();

Wartość zwracana

Wskaźnik CObject wcześniej na czele listy.

Uwagi

Przed wywołaniem metody RemoveHeadnależy upewnić się, że lista nie jest pusta. Jeśli lista jest pusta, zostanie asercyjna wersja debugowania biblioteki klas programu Microsoft Foundation. Użyj polecenia IsEmpty , aby sprawdzić, czy lista zawiera elementy.

W poniższej tabeli przedstawiono inne funkcje składowe podobne do CObList::RemoveHead.

Klasa Funkcja elementów członkowskich
CPtrList void* RemoveHead( );
CStringList CString RemoveHead( );

Przykład

Zobacz CObList::CObList , aby zapoznać się z listą CAge klasy.

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

Usuwa element z końca listy i zwraca do niego wskaźnik.

CObject* RemoveTail();

Wartość zwracana

Wskaźnik do obiektu, który znajdował się na kącie listy.

Uwagi

Przed wywołaniem metody RemoveTailnależy upewnić się, że lista nie jest pusta. Jeśli lista jest pusta, zostanie asercyjna wersja debugowania biblioteki klas programu Microsoft Foundation. Użyj polecenia IsEmpty , aby sprawdzić, czy lista zawiera elementy.

W poniższej tabeli przedstawiono inne funkcje składowe podobne do CObList::RemoveTail.

Klasa Funkcja elementów członkowskich
CPtrList void* RemoveTail( );
CStringList CString RemoveTail( );

Przykład

Zobacz CObList::CObList , aby zapoznać się z listą CAge klasy.

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

Ustawia element na danej pozycji.

void SetAt(
    POSITION pos,
    CObject* newElement);

Parametry

pos
Element POSITION do ustawienia.

newElement
Wskaźnik CObject do zapisania na liście.

Uwagi

Zmienna typu POSITION jest kluczem listy. Nie jest to takie samo jak indeks i nie można samodzielnie działać na POSITION wartości. SetAtCObject zapisuje wskaźnik na określonej pozycji na liście.

Musisz upewnić się, że wartość POSITION reprezentuje prawidłową pozycję na liście. Jeśli jest on nieprawidłowy, oznacza to, że wersja debugowania biblioteki klas programu Microsoft Foundation jest asercyjna.

W poniższej tabeli przedstawiono inne funkcje składowe podobne do CObList::SetAt.

Klasa Funkcja elementów członkowskich
CPtrList void SetAt( POSITION pos , const CString& newElement );
CStringList void SetAt( POSITION pos , LPCTSTR newElement );

Przykład

Zobacz CObList::CObList , aby zapoznać się z listą CAge klasy.

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      

Wyniki z tego programu są następujące:

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

Zobacz też

CObject Klasa
Wykres hierarchii
CStringList Klasa
CPtrList Klasa