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
Elementy członkowskie
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.
CObList
IMPLEMENT_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 CObject
programu 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
CObList
Wymagania
Nagłówek: 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 CObject
uż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. GetAt
CObject
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 CObList
elementu , zwraca GetHead
CObject
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 CObList
elementu , 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 GetHead
należ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 rPosition
element , 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 GetNext
wywołanie funkcji , GetHeadPosition
lub 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 GetHeadPosition
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 ostatnim elementem na liście, nowa wartość parametru jest ustawiona rPosition
na NULL
wartość .
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 rPosition
element , 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 NULL
wartość .
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 GetTail
należ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 GetNext
wywołanie funkcji , GetPrev
lub 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 GetNext
wywołanie funkcji , GetPrev
lub 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 CObList
elementu 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 CObList
elementu 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 RemoveHead
należ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 RemoveTail
należ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. SetAt
CObject
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