一方的でない CObject ポインターの順序付きリストを順番に、またはポインター値でアクセスできます。
構文
class CObList : public CObject
メンバー
パブリック コンストラクター
| 名前 | 説明 |
|---|---|
CObList::CObList |
CObject ポインターの空のリストを構築します。 |
パブリック メソッド
| 名前 | 説明 |
|---|---|
CObList::AddHead |
要素 (または別のリスト内のすべての要素) をリストの先頭に追加します (新しい先頭を作成します)。 |
CObList::AddTail |
リストの末尾に要素 (または別のリストのすべての要素) を追加します (新しい末尾を作成します)。 |
CObList::Find |
ポインター値で指定された要素の位置を取得します。 |
CObList::FindIndex |
0 から始まるインデックスで指定された要素の位置を取得します。 |
CObList::GetAt |
指定した位置にある要素を取得します。 |
CObList::GetCount |
このリスト内の要素の数を返します。 |
CObList::GetHead |
リストのヘッド要素を返します (空にすることはできません)。 |
CObList::GetHeadPosition |
リストのヘッド要素の位置を返します。 |
CObList::GetNext |
次に反復処理の対象となる要素が取得されます。 |
CObList::GetPrev |
反復する前の要素を取得します。 |
CObList::GetSize |
このリスト内の要素の数を返します。 |
CObList::GetTail |
リストの末尾要素を返します (空にすることはできません)。 |
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 マクロが組み込まれており、その要素のシリアル化とダンプがサポートされます。 オーバーロードされた挿入演算子または Serialize メンバー関数を使用して、CObject ポインターのリストがアーカイブに格納されている場合、各CObject要素が順番にシリアル化されます。
リスト内の個々の CObject 要素のダンプが必要な場合は、ダンプ コンテキストの深さを 1 以上に設定する必要があります。
CObList オブジェクトが削除されたとき、またはその要素が削除されると、参照するオブジェクトではなく、CObject ポインターのみが削除されます。
CObListから独自のクラスを派生させることができます。 CObjectから派生したオブジェクトへのポインターを保持するように設計された新しいリスト クラスは、新しいデータ メンバーと新しいメンバー関数を追加します。 結果のリストは、 CObject ポインターを挿入できるため、厳密には型セーフではないことに注意してください。
Note
リストをシリアル化する場合は、派生クラスの実装で IMPLEMENT_SERIAL マクロを使用する必要があります。
CObListの使用方法の詳細については、Collectionsに関する記事を参照してください。
継承階層
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 ); |
例
すべてのコレクション例で使用CAgeCObject派生クラスの一覧を次に示します。
// 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
検索するリスト要素の 0 から始まるインデックス。
戻り値
反復処理またはオブジェクト ポインターの取得に使用できるPOSITION値。nIndexが大きすぎる場合にNULL。 ( 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
前のGetHeadPositionまたはメンバー関数呼び出しによって返されるPOSITION値Find。
戻り値
GetHeadの戻り値の説明を参照してください。
解説
インデックスと同じではなく、 POSITION 値を自分で操作することはできません。 GetAt は、特定の位置に関連付けられている CObject ポインターを取得します。
POSITION値がリスト内の有効な位置を表していることを確認する必要があります。 無効な場合は、Microsoft Foundation クラス ライブラリのデバッグ バージョンがアサートされます。
次の表に、 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へのポインターを介してアクセスされた場合、 GetHead は CObject ポインターを返します。 これにより、関数を代入ステートメントの右側でのみ使用できるため、リストを変更から保護できます。
リストに直接アクセスするか、 CObListへのポインターを介してアクセスする場合、 GetHead は CObject ポインターへの参照を返します。 これにより、代入ステートメントの両側で関数を使用できるため、リスト エントリを変更できます。
解説
GetHeadを呼び出す前に、リストが空でないことを確認する必要があります。 リストが空の場合、Microsoft Foundation クラス ライブラリのデバッグ バージョンがアサートされます。 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で識別されるリスト要素を取得し、rPositionリスト内の次のエントリのPOSITION値に設定します。
CObject*& GetNext(POSITION& rPosition);
const CObject* GetNext(POSITION& rPosition) const;
パラメーター
rPosition
前のGetNext、GetHeadPosition、またはその他のメンバー関数呼び出しによって返されるPOSITION値への参照。
戻り値
GetHeadの戻り値の説明を参照してください。
解説
GetHeadPositionまたはFindの呼び出しで初期位置を確立する場合は、前方反復ループでGetNextを使用できます。
POSITION値がリスト内の有効な位置を表していることを確認する必要があります。 無効な場合は、Microsoft Foundation クラス ライブラリのデバッグ バージョンがアサートされます。
取得した要素がリストの最後の要素である場合、 rPosition の新しい値は NULLに設定されます。
イテレーション中に要素を削除できます。 RemoveAt の例を参照してください。
Note
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で識別されるリスト要素を取得し、rPositionリスト内の前のエントリのPOSITION値に設定します。
CObject*& GetPrev(POSITION& rPosition);
const CObject* GetPrev(POSITION& rPosition) const;
パラメーター
rPosition
前のGetPrevまたはその他のメンバー関数呼び出しによって返されるPOSITION値への参照。
戻り値
GetHeadの戻り値の説明を参照してください。
解説
GetTailPositionまたはFindの呼び出しで初期位置を確立する場合は、逆反復ループでGetPrevを使用できます。
POSITION値がリスト内の有効な位置を表していることを確認する必要があります。 無効な場合は、Microsoft Foundation クラス ライブラリのデバッグ バージョンがアサートされます。
取得した要素がリストの最初の要素である場合、 rPosition の新しい値は NULLに設定されます。
Note
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 ポインターを取得します。
CObject*& GetTail();
const CObject*& GetTail() const;
戻り値
GetHeadの戻り値の説明を参照してください。
解説
GetTailを呼び出す前に、リストが空でないことを確認する必要があります。 リストが空の場合、Microsoft Foundation クラス ライブラリのデバッグ バージョンがアサートされます。 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
前のGetNext、GetPrev、またはメンバー関数呼び出しによって返されるPOSITION値Find。
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
前のGetNext、GetPrev、またはメンバー関数呼び出しによって返されるPOSITION値Find。
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 以外。それ以外の場合は 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 クラス ライブラリのデバッグ バージョンがアサートされます。
次の表に、 CObList::RemoveAtのような他のメンバー関数を示します。
| クラス | メンバー関数 |
|---|---|
CPtrList |
void RemoveAt( POSITION position ); |
CStringList |
void RemoveAt( POSITION position ); |
例
リストの反復処理中に要素を削除するときは注意してください。 次の例は、GetNextの有効なPOSITION値を保証する削除手法を示しています。
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 クラス ライブラリのデバッグ バージョンがアサートされます。 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 クラス ライブラリのデバッグ バージョンがアサートされます。 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 クラス ライブラリのデバッグ バージョンがアサートされます。
次の表に、 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