Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.
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
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 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 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 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 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 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