分享方式:


CObList 類別

支援循序或依指標值存取的非統 CObject 一指標清單。

語法

class CObList : public CObject

成員

公用建構函式

名稱 描述
CObList::CObList 建構指標的 CObject 空白清單。

公用方法

名稱 描述
CObList::AddHead 將元素(或另一個清單中的所有元素)新增至清單的前端(使新的前端)。
CObList::AddTail 將元素(或另一個清單中的所有元素)新增至清單的尾端(使新的尾端)。
CObList::Find 取得指標值所指定的專案位置。
CObList::FindIndex 取得以零起始的索引所指定之專案的位置。
CObList::GetAt 取得位於指定位置的專案。
CObList::GetCount 傳回此清單中的項目數目。
CObList::GetHead 傳回清單的前端元素(不能空白)。
CObList::GetHeadPosition 傳回清單的 head 元素位置。
CObList::GetNext 取得反覆運算的下一個專案。
CObList::GetPrev 取得上一個項目進行反覆運算。
CObList::GetSize 傳回此清單中的項目數目。
CObList::GetTail 傳回清單的 tail 元素(不能空白)。
CObList::GetTailPosition 傳回清單結尾專案的位置。
CObList::InsertAfter 在指定位置後面插入新專案。
CObList::InsertBefore 在指定位置之前插入新專案。
CObList::IsEmpty 測試空白清單條件(沒有元素)。
CObList::RemoveAll 從此清單中移除所有元素。
CObList::RemoveAt 從這個清單中移除專案,由位置指定。
CObList::RemoveHead 從清單的前端移除 專案。
CObList::RemoveTail 從清單尾端移除 專案。
CObList::SetAt 設定位於指定位置的專案。

備註

CObList 清單的行為就像是多倍連結的清單。

類型的 POSITION 變數是清單的索引鍵。 您可以使用 POSITION 變數作為反覆運算器,循序周遊清單,並以書籤的形式保留位置。 不過,位置與索引不同。

元素插入在清單標頭、尾端和已知 POSITION處非常快速。 需要循序搜尋,才能依值或索引查閱專案。 如果清單很長,此搜尋可能會很慢。

CObList 引入 IMPLEMENT_SERIAL 巨集,以支援其項目的序列化和傾印。 如果指標清單 CObject 儲存至封存,使用多載插入運算符或 Serialize 成員函式,則每個 CObject 元素都會接著串行化。

如果您需要清單中的個別 CObject 元素傾印,您必須將傾印內容的深度設定為 1 或更新。

CObList刪除物件時,或移除其專案時,只會CObject移除指標,而不是它們參考的物件。

您可以從 衍生自己的類別 CObList。 您的新清單類別,其設計目的是要保存衍生自 CObject的對象指標,並新增新的數據成員和新成員函式。 請注意,產生的清單並非絕對安全類型,因為它允許插入任何 CObject 指標。

注意

如果您想要串行化清單, IMPLEMENT_SERIAL 則必須在衍生類別的實作中使用 宏。

如需使用 CObList的詳細資訊,請參閱集合一文

繼承階層架構

CObject

CObList

需求

頁眉: afxcoll.h

CObList::AddHead

將新專案或專案清單加入至此清單的標頭。

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

參數

newElement
CObject 加入至此清單的指標。

pNewList
另一個 CObList 清單的指標。 中的 pNewList 專案將會新增至此清單。

傳回值

第一個版本會傳 POSITION 回新插入專案的值。

下表顯示類似 CObList::AddHead的其他成員函式。

類別 成員函式
CPtrList POSITION AddHead( void * newElement );

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

POSITION AddHead(LPCTSTR newElement );

void AddHead(CStringList * pNewList );

備註

此清單在作業之前可以是空的。

範例

如需 類別清單,CAge請參閱 CObList::CObList

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      

此程式的結果如下所示:

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

CObList::AddTail

將新的專案或專案清單加入至此清單的結尾。

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

參數

newElement
CObject 加入至此清單的指標。

pNewList
另一個 CObList 清單的指標。 中的 pNewList 專案將會新增至此清單。

傳回值

第一個版本會傳 POSITION 回新插入專案的值。

備註

此清單在作業之前可以是空的。

下表顯示類似 CObList::AddTail的其他成員函式。

類別 成員函式
CPtrList POSITION AddTail( void * newElement );

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

POSITION AddTail( LPCTSTR newElement );

void AddTail( CStringList * pNewList );

範例

如需 類別清單,CAge請參閱 CObList::CObList

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      

此程式的結果如下所示:

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

CObList::CObList

建構空 CObject 的指標清單。

CObList(INT_PTR nBlockSize = 10);

參數

nBlockSize
用來擴充清單的記憶體配置粒度。

備註

隨著清單成長,記憶體會以專案單位 nBlockSize 配置。 如果記憶體設定失敗, CMemoryException 則會擲回 。

下表顯示類似 CObList::CObList的其他成員函式。

類別 成員函式
CPtrList CPtrList( INT_PTR nBlockSize = 10 );
CStringList CStringList( INT_PTR nBlockSize = 10 );

範例

以下是所有集合範例中使用的衍生類別CAge清單CObject

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

以下是建構函式用法的 CObList 範例:

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

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

CObList::Find

循序搜尋清單,以尋找符合指定CObject指標的第一個CObject指標。

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

參數

searchValue
要在此清單中找到的物件指標。

startAfter
搜尋的開始位置。

傳回值

POSITION值,可用於反覆項目或物件指標擷取;NULL如果找不到物件,則為 。

備註

請注意,指標值會比較,而不是對象的內容。

下表顯示類似 CObList::Find的其他成員函式。

類別 成員函式
CPtrList POSITION Find( void *searchValue , POSITION startAfter = NULL ) const;
CStringList POSITION Find( LPCTSTR searchValue , POSITION startAfter = NULL ) const;

範例

如需 類別清單,CAge請參閱 CObList::CObList

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

使用的值 nIndex 做為清單中的索引。

POSITION FindIndex(INT_PTR nIndex) const;

參數

nIndex
要找到之清單專案的以零起始的索引。

傳回值

POSITION值,可用於反覆項目或物件指標擷取;NULL如果nIndex太大則為 。 (如果 nIndex 為負數,架構會產生判斷提示。

備註

它會從清單的前端開始循序掃描,並在第 n個元素上停止。

下表顯示類似 CObList::FindIndex的其他成員函式。

類別 成員函式
CPtrList POSITION FindIndex( INT_PTR nIndex ) const;
CStringList POSITION FindIndex( INT_PTR nIndex ) const;

範例

如需 類別清單,CAge請參閱 CObList::CObList

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

類型的 POSITION 變數是清單的索引鍵。

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

參數

position
POSITION先前GetHeadPositionFind成員函式呼叫所傳回的值。

傳回值

請參閱的 GetHead傳回值描述。

備註

它與索引不同,而且您無法自行操作 POSITION 值。 GetAtCObject擷取與指定位置相關聯的指標。

您必須確定您的 POSITION 值代表清單中的有效位置。 如果無效,則Microsoft基礎類別庫的偵錯版本判斷提示。

下表顯示類似 CObList::GetAt的其他成員函式。

類別 成員函式
CPtrList const void*& GetAt( POSITION position ) const;

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

CString& GetAt( POSITION position );

範例

請參閱 FindIndex 的範例。

CObList::GetCount

取得此清單中的項目數目。

INT_PTR GetCount() const;

傳回值

包含項目計數的整數值。

下表顯示類似 CObList::GetCount的其他成員函式。

類別 成員函式
CPtrList INT_PTR GetCount( ) const;
CStringList INT_PTR GetCount( ) const;

範例

如需 類別清單,CAge請參閱 CObList::CObList

CObList list;

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

CObList::GetHead

CObject取得指標,表示這個清單的前端專案。

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

傳回值

如果清單是透過的 const CObList指標存取,則會 GetHeadCObject 回指標。 這可讓函式只能在指派語句的右側使用,因此可保護清單不受修改。

如果直接或透過的 CObList指標存取清單,則會 GetHead 傳回指標的 CObject 參考。 這可讓函式用於工作分派語句的任一端,因此允許修改清單專案。

備註

在呼叫 GetHead之前,您必須確定清單不是空的。 如果清單是空的,則Microsoft基礎類別庫的偵錯版本判斷提示。 使用 IsEmpty 來確認清單包含元素。

下表顯示類似 CObList::GetHead的其他成員函式。

類別 成員函式
CPtrList const void*& GetHead( ) const; void*& GetHead( );
CStringList const CString& GetHead( ) const; CString& GetHead( );

範例

如需 類別清單,CAge請參閱 CObList::CObList

下列範例說明在工作分派語句左側的 用法 GetHead

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

取得這個清單的前端專案位置。

POSITION GetHeadPosition() const;

傳回值

POSITION值,可用於反覆專案或對象指標擷取;NULL如果清單是空的。

下表顯示類似 CObList::GetHeadPosition的其他成員函式。

類別 成員函式
CPtrList POSITION GetHeadPosition( ) const;
CStringList POSITION GetHeadPosition( ) const;

範例

如需 類別清單,CAge請參閱 CObList::CObList

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

取得 所 rPosition識別的清單專案,然後將 設定 rPositionPOSITION 清單中的下一個專案的值。

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

參數

rPosition
先前GetNextGetHeadPosition或其他成員函式呼叫所傳回之值的參考POSITION

傳回值

請參閱的 GetHead傳回值描述。

備註

如果您使用 呼叫 GetHeadPositionFind建立初始位置,則可以GetNext在正向反覆運算循環中使用 。

您必須確定您的 POSITION 值代表清單中的有效位置。 如果無效,則Microsoft基礎類別庫的偵錯版本判斷提示。

如果擷取的項目是清單中的最後一個,則的新值 rPosition 會設定為 NULL

在反覆項目期間,可以移除專案。 請參閱 RemoveAt 的範例。

注意

從 MFC 8.0 開始,這個方法的 const 版本已變更為傳回 const CObject*const CObject*&而不是 。 這項變更是讓編譯程式符合C++標準。

下表顯示類似 CObList::GetNext的其他成員函式。

類別 成員函式
CPtrList void*& GetNext( POSITION& rPosition );

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

const CString& GetNext( POSITION& rPosition ) const;

範例

如需 類別清單,CAge請參閱 CObList::CObList

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      

此程式的結果如下所示:

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

CObList::GetPrev

取得 所 rPosition識別的清單專案,然後將 設定 rPositionPOSITION 清單中上一個專案的值。

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

參數

rPosition
先前GetPrev或其他成員函式呼叫所傳回之值的參考POSITION

傳回值

請參閱的 GetHead傳回值描述。

備註

如果您使用 呼叫 GetTailPositionFind建立初始位置,則可以在反向反覆運算循環中使用 GetPrev

您必須確定您的 POSITION 值代表清單中的有效位置。 如果無效,則Microsoft基礎類別庫的偵錯版本判斷提示。

如果擷取的專案是第一個清單中的專案,則的新值 rPosition 會設定為 NULL

注意

從 MFC 8.0 開始,這個方法的 const 版本已變更為傳回 const CObject*const CObject*&而不是 。 這項變更是讓編譯程式符合C++標準。

下表顯示類似 CObList::GetPrev的其他成員函式。

類別 成員函式
CPtrList void*& GetPrev( POSITION& rPosition );

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

const CString& GetPrev( POSITION& rPosition ) const;

範例

如需 類別清單,CAge請參閱 CObList::CObList

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
}

此程式的結果如下所示:

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

CObList::GetSize

傳回清單項目的數目。

INT_PTR GetSize() const;

傳回值

清單中的項目數。

備註

呼叫此方法以擷取清單中的項目數目。

下表顯示類似 CObList::GetSize的其他成員函式。

類別 成員函式
CPtrList INT_PTR GetSize( ) const;
CStringList INT_PTR GetSize( ) const;

範例

如需 類別清單,CAge請參閱 CObList::CObList

CObList list;

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

CObList::GetTail

CObject取得指標,表示這個清單的tail元素。

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

傳回值

請參閱的 GetHead傳回值描述。

備註

在呼叫 GetTail之前,您必須確定清單不是空的。 如果清單是空的,則Microsoft基礎類別庫的偵錯版本判斷提示。 使用 IsEmpty 來確認清單包含元素。

下表顯示類似 CObList::GetTail的其他成員函式。

類別 成員函式
CPtrList const void*& GetTail( ) const; void*& GetTail( );
CStringList const CString& GetTail( ) const; CString& GetTail( );

範例

如需 類別清單,CAge請參閱 CObList::CObList

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

取得這個清單的 tail 元素位置; NULL 如果清單是空的,則為 。

POSITION GetTailPosition() const;

傳回值

POSITION值,可用於反覆專案或對象指標擷取;NULL如果清單是空的。

下表顯示類似 CObList::GetTailPosition的其他成員函式。

類別 成員函式
CPtrList POSITION GetTailPosition( ) const;
CStringList POSITION GetTailPosition( ) const;

範例

如需 類別清單,CAge請參閱 CObList::CObList

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

在位於指定位置的項目之後,將專案加入至此清單。

POSITION InsertAfter(
    POSITION position,
    CObject* newElement);

參數

position
POSITION先前GetNextGetPrevFind 成員函式呼叫所傳回的值。

newElement
要加入至此清單的物件指標。

下表顯示類似 CObList::InsertAfter的其他成員函式。

類別 成員函式
CPtrList POSITION InsertAfter( POSITION position , void * newElement );
CStringList POSITION InsertAfter( POSITION position , const CString& newElement );

POSITION InsertAfter( POSITION position , LPCTSTR newElement );

傳回值

POSITION值,與 position 參數相同。

範例

如需 類別清單,CAge請參閱 CObList::CObList

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

此程式的結果如下所示:

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

CObList::InsertBefore

將項目加入這份清單中相同項目之前的指定位置。

POSITION InsertBefore(
    POSITION position,
    CObject* newElement);

參數

position
POSITION先前GetNextGetPrevFind 成員函式呼叫所傳回的值。

newElement
要加入至此清單的物件指標。

傳回值

POSITION值,可用於反覆專案或對象指標擷取;NULL如果清單是空的。

下表顯示類似 CObList::InsertBefore的其他成員函式。

類別 成員函式
CPtrList POSITION InsertBefore( POSITION position , void * newElement );
CStringList POSITION InsertBefore( POSITION position , const CString& newElement );

POSITION InsertBefore( POSITION position , LPCTSTR newElement );

範例

如需 類別清單,CAge請參閱 CObList::CObList

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      

此程式的結果如下所示:

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

CObList::IsEmpty

指出此清單是否不包含任何元素。

BOOL IsEmpty() const;

傳回值

如果此清單是空的,則為非零;否則為 0。

下表顯示類似 CObList::IsEmpty的其他成員函式。

類別 成員函式
CPtrList BOOL IsEmpty( ) const;
CStringList BOOL IsEmpty( ) const;

範例

請參閱 RemoveAll 的範例。

CObList::RemoveAll

從此清單中移除所有元素,並釋放相關聯的 CObList 記憶體。

void RemoveAll();

備註

如果清單已經空白,則不會產生任何錯誤。

當您從 CObList中移除專案時,您會從清單中移除物件指標。 您有責任自行刪除物件。

下表顯示類似 CObList::RemoveAll的其他成員函式。

類別 成員函式
CPtrList void RemoveAll( );
CStringList void RemoveAll( );

範例

如需 類別清單,CAge請參閱 CObList::CObList

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

從這個清單中移除指定的專案。

void RemoveAt(POSITION position);

參數

position
要從清單中移除之專案的位置。

備註

當您從 CObList移除專案時,您會從清單中移除物件指標。 您有責任自行刪除物件。

您必須確定您的 POSITION 值代表清單中的有效位置。 如果無效,則Microsoft基礎類別庫的偵錯版本判斷提示。

下表顯示類似 CObList::RemoveAt的其他成員函式。

類別 成員函式
CPtrList void RemoveAt( POSITION position );
CStringList void RemoveAt( POSITION position );

範例

在清單反覆項目期間移除專案時,請小心。 下列範例顯示一種移除技術,可保證的有效POSITIONGetNext值。

如需 類別清單,CAge請參閱 CObList::CObList

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      

此程式的結果如下所示:

RemoveAt example: A CObList with 2 elements

a CAge at $4C1E 65

a CAge at $4B22 21

CObList::RemoveHead

從清單的前端移除專案,並傳回它的指標。

CObject* RemoveHead();

傳回值

CObject先前位於清單前端的指標。

備註

在呼叫 RemoveHead之前,您必須確定清單不是空的。 如果清單是空的,則Microsoft基礎類別庫的偵錯版本判斷提示。 使用 IsEmpty 來確認清單包含元素。

下表顯示類似 CObList::RemoveHead的其他成員函式。

類別 成員函式
CPtrList void* RemoveHead( );
CStringList CString RemoveHead( );

範例

如需 類別清單,CAge請參閱 CObList::CObList

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

從清單尾端移除 專案,並傳回它的指標。

CObject* RemoveTail();

傳回值

位於清單尾端之物件的指標。

備註

在呼叫 RemoveTail之前,您必須確定清單不是空的。 如果清單是空的,則Microsoft基礎類別庫的偵錯版本判斷提示。 使用 IsEmpty 來確認清單包含元素。

下表顯示類似 CObList::RemoveTail的其他成員函式。

類別 成員函式
CPtrList void* RemoveTail( );
CStringList CString RemoveTail( );

範例

如需 類別清單,CAge請參閱 CObList::CObList

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

設定位於指定位置的專案。

void SetAt(
    POSITION pos,
    CObject* newElement);

參數

pos
POSITION要設定之項目的 。

newElement
CObject 寫入清單的指標。

備註

類型的 POSITION 變數是清單的索引鍵。 它與索引不同,而且您無法自行操作 POSITION 值。 SetAt 寫入 CObject 清單中指定位置的指標。

您必須確定您的 POSITION 值代表清單中的有效位置。 如果無效,則Microsoft基礎類別庫的偵錯版本判斷提示。

下表顯示類似 CObList::SetAt的其他成員函式。

類別 成員函式
CPtrList void SetAt( POSITION pos , const CString& newElement );
CStringList void SetAt( POSITION pos , LPCTSTR newElement );

範例

如需 類別清單,CAge請參閱 CObList::CObList

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      

此程式的結果如下所示:

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

另請參閱

CObject 類別
階層架構圖表
CStringList
CPtrList