共用方式為


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 Foundation Class Library 的偵錯版本會判斷提示。

下表顯示類似 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 Foundation Class Library 的偵錯版本會判斷提示。 使用 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 Foundation Class Library 的偵錯版本會判斷提示。

如果擷取的專案是清單中的最後一個,則 的新值 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 Foundation Class Library 的偵錯版本會判斷提示。

如果擷取的專案是第一個清單中的專案,則 的新值 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 Foundation Class Library 的偵錯版本會判斷提示。 使用 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 Foundation Class Library 的偵錯版本會判斷提示。

下表顯示類似 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 Foundation Class Library 的偵錯版本會判斷提示。 使用 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 Foundation Class Library 的偵錯版本會判斷提示。 使用 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 Foundation Class Library 的偵錯版本會判斷提示。

下表顯示類似 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