CObList クラスCObList Class

CObject順次またはポインター値によってアクセスできる一意でないポインターの順序付きリストをサポートします。Supports ordered lists of nonunique CObject pointers accessible sequentially or by pointer value.

構文Syntax

class CObList : public CObject

メンバーMembers

パブリック コンストラクターPublic Constructors

名前Name 説明Description
CObList:: CObListCObList::CObList ポインターの空のリストを構築 CObject します。Constructs an empty list for CObject pointers.

パブリック メソッドPublic Methods

名前Name 説明Description
CObList:: AddHeadCObList::AddHead 要素 (または別のリスト内のすべての要素) をリストの先頭に追加します (新しい head を作成します)。Adds an element (or all the elements in another list) to the head of the list (makes a new head).
CObList:: AddTailCObList::AddTail 要素 (または別のリスト内のすべての要素) をリストの末尾に追加します (新しい末尾を作成します)。Adds an element (or all the elements in another list) to the tail of the list (makes a new tail).
CObList:: FindCObList::Find ポインター値によって指定された要素の位置を取得します。Gets the position of an element specified by pointer value.
CObList:: FindIndexCObList::FindIndex 0から始まるインデックスで指定された要素の位置を取得します。Gets the position of an element specified by a zero-based index.
CObList:: GetAtCObList::GetAt 指定した位置にある要素を取得します。Gets the element at a given position.
CObList:: GetCountCObList::GetCount このリスト内の要素の数を返します。Returns the number of elements in this list.
CObList:: GetHeadCObList::GetHead リストの head 要素を返します (空にすることはできません)。Returns the head element of the list (cannot be empty).
CObList:: GetHeadPositionCObList::GetHeadPosition リストの先頭の要素の位置を返します。Returns the position of the head element of the list.
CObList:: GetNextCObList::GetNext 反復処理の対象となる次の要素を取得します。Gets the next element for iterating.
CObList:: GetPrevCObList::GetPrev 反復処理する前の要素を取得します。Gets the previous element for iterating.
CObList:: GetSizeCObList::GetSize このリスト内の要素の数を返します。Returns the number of elements in this list.
CObList:: GetTailCObList::GetTail リストの末尾の要素を返します (空にすることはできません)。Returns the tail element of the list (cannot be empty).
CObList:: GetTailPositionCObList::GetTailPosition リストの末尾の要素の位置を返します。Returns the position of the tail element of the list.
CObList:: InsertAfterCObList::InsertAfter 指定された位置の後に新しい要素を挿入します。Inserts a new element after a given position.
CObList:: InsertBeforeCObList::InsertBefore 指定した位置の前に新しい要素を挿入します。Inserts a new element before a given position.
CObList:: IsEmptyCObList::IsEmpty 空のリスト条件 (要素なし) があるかどうかをテストします。Tests for the empty list condition (no elements).
CObList:: RemoveAllCObList::RemoveAll このリストからすべての要素を削除します。Removes all the elements from this list.
CObList:: RemoveAtCObList::RemoveAt 位置によって指定された、このリストから要素を削除します。Removes an element from this list, specified by position.
CObList:: RemoveHeadCObList::RemoveHead リストの先頭から要素を削除します。Removes the element from the head of the list.
CObList:: RemoveTail ます。CObList::RemoveTail リストの末尾から要素を削除します。Removes the element from the tail of the list.
CObList:: SetAtCObList::SetAt 指定された位置に要素を設定します。Sets the element at a given position.

解説Remarks

CObList リストは、二重リンクリストのように動作します。CObList lists behave like doubly-linked lists.

POSITION 型の変数は、リストのキーです。A variable of type POSITION is a key for the list. 位置変数を反復子として使用して、リストを順番に移動したり、場所を保持するブックマークとして使用したりできます。You can use a POSITION variable both as an iterator to traverse a list sequentially and as a bookmark to hold a place. ただし、位置はインデックスと同じではありません。A position is not the same as an index, however.

要素の挿入は、リストの先頭、末尾、および既知の位置で非常に高速です。Element insertion is very fast at the list head, at the tail, and at a known POSITION. 値またはインデックスによって要素を検索するには、順次検索が必要です。A sequential search is necessary to look up an element by value or index. リストが長い場合、この検索は遅くなることがあります。This search can be slow if the list is long.

CObList には、要素のシリアル化とダンプをサポートするために IMPLEMENT_SERIAL マクロが組み込まれています。CObList incorporates the IMPLEMENT_SERIAL macro to support serialization and dumping of its elements. ポインターのリストが、オーバーロードされた CObject 挿入演算子またはメンバー関数を使用してアーカイブに格納されている場合 Serialize 、各 CObject 要素は順番にシリアル化されます。If a list of CObject pointers is stored to an archive, either with an overloaded insertion operator or with the Serialize member function, each CObject element is serialized in turn.

リスト内の個々の要素のダンプが必要な場合は、 CObject ダンプコンテキストの深さを1以上に設定する必要があります。If you need a dump of individual CObject elements in the list, you must set the depth of the dump context to 1 or greater.

オブジェクトが削除されたとき CObList 、またはその要素が削除されたときには、 CObject ポインターだけが削除されます。参照するオブジェクトは削除されません。When a CObList object is deleted, or when its elements are removed, only the CObject pointers are removed, not the objects they reference.

独自のクラスをから派生させることができ CObList ます。You can derive your own classes from CObList. から派生したオブジェクトへのポインターを保持するように設計された新しいリストクラス CObject は、新しいデータメンバーと新しいメンバー関数を追加します。Your new list class, designed to hold pointers to objects derived from CObject, adds new data members and new member functions. 結果の一覧は、任意のポインターを挿入できるため、厳密には型セーフではありません CObjectNote that the resulting list is not strictly type safe, because it allows insertion of any CObject pointer.

注意

リストをシリアル化する場合は、派生クラスの実装で IMPLEMENT_SERIAL マクロを使用する必要があります。You must use the IMPLEMENT_SERIAL macro in the implementation of your derived class if you intend to serialize the list.

の使用方法の詳細については CObList 、「 コレクション」を参照してください。For more information on using CObList, see the article Collections.

継承階層Inheritance Hierarchy

CObjectCObject

CObList

要件Requirements

ヘッダー: afxcoll.hHeader: afxcoll.h

CObList:: AddHeadCObList::AddHead

このリストの先頭に新しい要素または要素のリストを追加します。Adds a new element or list of elements to the head of this list.

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

パラメーターParameters

(NewelementnewElement
CObjectこのリストに追加するポインター。The CObject pointer to be added to this list.

pNewListpNewList
別のリストへのポインター CObListA pointer to another CObList list. Pnewlist 内の要素が、この一覧に追加されます。The elements in pNewList will be added to this list.

戻り値Return Value

最初のバージョンは、新しく挿入された要素の位置の値を返します。The first version returns the POSITION value of the newly inserted element.

次の表は、に似た他のメンバー関数を示して CObList::AddHead います。The following table shows other member functions that are similar to CObList::AddHead.

クラスClass メンバー関数Member Function
CPtrListCPtrList 位置 AddHead (void * newElement);POSITION AddHead( void * newElement );

Void AddHead (CPtrList * pNewList);void AddHead( CPtrList * pNewList );
CStringListCStringList POSITION AddHead (Const CString& newElement );POSITION AddHead(const CString& newElement );

POSITION AddHead (LPCTSTR newElement );POSITION AddHead(LPCTSTR newElement );

Void AddHead (CStringList * pNewList);void AddHead(CStringList * pNewList );

解説Remarks

操作の前に、リストを空にすることができます。The list can be empty before the operation.

Example

クラスの一覧については、「 coblist:: coblist 」を参照してください CAgeSee CObList::CObList for a listing of the CAge class.

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      

このプログラムの結果は次のとおりです。The results from this program are as follows:

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

CObList:: AddTailCObList::AddTail

このリストの末尾に新しい要素または要素のリストを追加します。Adds a new element or list of elements to the tail of this list.

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

パラメーターParameters

(NewelementnewElement
CObjectこのリストに追加するポインター。The CObject pointer to be added to this list.

pNewListpNewList
別のリストへのポインター CObListA pointer to another CObList list. Pnewlist 内の要素が、この一覧に追加されます。The elements in pNewList will be added to this list.

戻り値Return Value

最初のバージョンは、新しく挿入された要素の位置の値を返します。The first version returns the POSITION value of the newly inserted element.

解説Remarks

操作の前に、リストを空にすることができます。The list can be empty before the operation.

次の表は、に似た他のメンバー関数を示して CObList::AddTail います。The following table shows other member functions that are similar to CObList::AddTail.

クラスClass メンバー関数Member Function
CPtrListCPtrList 位置の AddTail (void * newElement);POSITION AddTail( void * newElement );

Void AddTail (CPtrList * pNewList);void AddTail( CPtrList * pNewList );
CStringListCStringList POSITION AddTail (Const CString& newElement );POSITION AddTail( const CString& newElement );

位置の AddTail (LPCTSTR newElement );POSITION AddTail( LPCTSTR newElement );

Void AddTail (CStringList * pNewList);void AddTail( CStringList * pNewList );

Example

クラスの一覧については、「 coblist:: coblist 」を参照してください CAgeSee CObList::CObList for a listing of the CAge class.

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      

このプログラムの結果は次のとおりです。The results from this program are as follows:

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

CObList:: CObListCObList::CObList

CObject のポインターリストを構築します。Constructs an empty CObject pointer list.

CObList(INT_PTR nBlockSize = 10);

パラメーターParameters

nBlockSizenBlockSize
リストを拡張するためのメモリ割り当ての粒度。The memory-allocation granularity for extending the list.

解説Remarks

リストが大きくなるにつれて、メモリは Nblocksize エントリの単位で割り当てられます。As the list grows, memory is allocated in units of nBlockSize entries. メモリ割り当てが失敗すると、 CMemoryException がスローされます。If a memory allocation fails, a CMemoryException is thrown.

次の表は、に似た他のメンバー関数を示して CObList::CObList います。The following table shows other member functions that are similar to CObList::CObList.

クラスClass メンバー関数Member Function
CPtrListCPtrList CPtrList (INT_PTR nBlockSize = 10);CPtrList( INT_PTR nBlockSize = 10 );
CStringListCStringList Cstringlist (INT_PTR nBlockSize = 10);CStringList( INT_PTR nBlockSize = 10 );

Example

次に示すのは、 CObject CAge すべてのコレクションの例で使用されているから派生したクラスの一覧です。Below is a listing of the CObject-derived class CAge used in all the collection examples:

// 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 ます。Below is an example of CObList constructor usage:

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

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

CObList:: FindCObList::Find

リストを順番に検索し、指定したポインターに一致する最初のポインターを検索し CObject CObject ます。Searches the list sequentially to find the first CObject pointer matching the specified CObject pointer.

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

パラメーターParameters

searchValuesearchValue
この一覧に含まれるオブジェクトポインター。The object pointer to be found in this list.

startAfterstartAfter
検索の開始位置。The start position for the search.

戻り値Return Value

反復またはオブジェクトポインターの取得に使用できる位置の値。オブジェクトが見つからない場合は NULL です。A POSITION value that can be used for iteration or object pointer retrieval; NULL if the object is not found.

解説Remarks

ポインターの値は、オブジェクトの内容ではなく比較されることに注意してください。Note that the pointer values are compared, not the contents of the objects.

次の表は、に似た他のメンバー関数を示して CObList::Find います。The following table shows other member functions that are similar to CObList::Find.

クラスClass メンバー関数Member Function
CPtrListCPtrList 位置検索 (void) * searchValue、POSITION startAfter= NULL) const;POSITION Find( void * searchValue , POSITION startAfter = NULL ) const;
CStringListCStringList Position Find (LPCTSTR searchValue , position startAfter = NULL) const;POSITION Find( LPCTSTR searchValue , POSITION startAfter = NULL ) const;

Example

クラスの一覧については、「 coblist:: coblist 」を参照してください CAgeSee CObList::CObList for a listing of the CAge class.

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:: FindIndexCObList::FindIndex

リストのインデックスとして、 nIndex の値を使用します。Uses the value of nIndex as an index into the list.

POSITION FindIndex(INT_PTR nIndex) const;

パラメーターParameters

nIndexnIndex
検索するリスト要素の0から始まるインデックス。The zero-based index of the list element to be found.

戻り値Return Value

反復またはオブジェクトポインターの取得に使用できる位置の値。 NIndex が大きすぎる場合は NULL です。A POSITION value that can be used for iteration or object pointer retrieval; NULL if nIndex is too large. ( NIndex が負の場合、フレームワークはアサーションを生成します)。(The framework generates an assertion if nIndex is negative.)

解説Remarks

リストの先頭からシーケンシャルスキャンを開始し、 n 番目の要素に対して停止します。It starts a sequential scan from the head of the list, stopping on the n th element.

次の表は、に似た他のメンバー関数を示して CObList::FindIndex います。The following table shows other member functions that are similar to CObList::FindIndex.

クラスClass メンバー関数Member Function
CPtrListCPtrList POSITION findindex (INT_PTR nIndex ) const;POSITION FindIndex( INT_PTR nIndex ) const;
CStringListCStringList POSITION findindex (INT_PTR nIndex ) const;POSITION FindIndex( INT_PTR nIndex ) const;

Example

クラスの一覧については、「 coblist:: coblist 」を参照してください CAgeSee CObList::CObList for a listing of the CAge class.

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:: GetAtCObList::GetAt

POSITION 型の変数は、リストのキーです。A variable of type POSITION is a key for the list.

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

パラメーターParameters

positionposition
前の GetHeadPosition 関数または Find メンバー関数呼び出しによって返される位置の値。A POSITION value returned by a previous GetHeadPosition or Find member function call.

戻り値Return Value

GetHeadの戻り値の説明を参照してください。See the return value description for GetHead.

解説Remarks

インデックスとは異なり、位置の値を自分で操作することはできません。It is not the same as an index, and you cannot operate on a POSITION value yourself. GetAt 指定した CObject 位置に関連付けられているポインターを取得します。GetAt retrieves the CObject pointer associated with a given position.

位置の値がリスト内の有効な位置を表していることを確認する必要があります。You must ensure that your POSITION value represents a valid position in the list. 無効な場合は、Microsoft Foundation Class ライブラリのデバッグバージョンがアサートされます。If it is invalid, then the Debug version of the Microsoft Foundation Class Library asserts.

次の表は、に似た他のメンバー関数を示して CObList::GetAt います。The following table shows other member functions that are similar to CObList::GetAt.

クラスClass メンバー関数Member Function
CPtrListCPtrList *const void *& GETAT (位置***位置 ) const;const void*& GetAt( POSITION position ) const;

void *& GETAT (位置位置 ) です。void*& GetAt( POSITION position );
CStringListCStringList Const CString& GetAt (位置位置 ) const;const CString& GetAt( POSITION position ) const;

CString& GetAt (位置位置 ) です。CString& GetAt( POSITION position );

Example

Findindexの例を参照してください。See the example for FindIndex.

CObList:: GetCountCObList::GetCount

このリスト内の要素の数を取得します。Gets the number of elements in this list.

INT_PTR GetCount() const;

戻り値Return Value

要素の数を表す整数値です。An integer value containing the element count.

次の表は、に似た他のメンバー関数を示して CObList::GetCount います。The following table shows other member functions that are similar to CObList::GetCount.

クラスClass メンバー関数Member Function
CPtrListCPtrList INT_PTR GetCount () const;INT_PTR GetCount( ) const;
CStringListCStringList INT_PTR GetCount () const;INT_PTR GetCount( ) const;

Example

クラスの一覧については、「 coblist:: coblist 」を参照してください CAgeSee CObList::CObList for a listing of the CAge class.

CObList list;

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

CObList:: GetHeadCObList::GetHead

CObjectこのリストの head 要素を表すポインターを取得します。Gets the CObject pointer that represents the head element of this list.

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

戻り値Return Value

へのポインターを使用してリストにアクセスした場合 const CObList 、は GetHead ポインターを返し CObject ます。If the list is accessed through a pointer to a const CObList, then GetHead returns a CObject pointer. これにより、関数を代入ステートメントの右側でのみ使用できるようになるため、リストが変更されないように保護できます。This allows the function to be used only on the right side of an assignment statement and thus protects the list from modification.

リストに直接アクセスした場合、またはへのポインターを介してアクセスした場合 CObList 、は GetHead ポインターへの参照を返し CObject ます。If the list is accessed directly or through a pointer to a CObList, then GetHead returns a reference to a CObject pointer. これにより、関数を代入ステートメントのどちら側でも使用できるようになり、リストエントリを変更できるようになります。This allows the function to be used on either side of an assignment statement and thus allows the list entries to be modified.

解説Remarks

を呼び出す前に、リストが空でないことを確認する必要があり GetHead ます。You must ensure that the list is not empty before calling GetHead. リストが空の場合は、Microsoft Foundation Class ライブラリのデバッグバージョンがアサートされます。If the list is empty, then the Debug version of the Microsoft Foundation Class Library asserts. IsEmptyを使用して、リストに要素が含まれていることを確認します。Use IsEmpty to verify that the list contains elements.

次の表は、に似た他のメンバー関数を示して CObList::GetHead います。The following table shows other member functions that are similar to CObList::GetHead.

クラスClass メンバー関数Member Function
CPtrListCPtrList const void *& GetHead () const; void *& GetHead ();const void*& GetHead( ) const; void*& GetHead( );
CStringListCStringList const CString& GetHead () const;CString& GetHead ();const CString& GetHead( ) const; CString& GetHead( );

Example

クラスの一覧については、「 coblist:: coblist 」を参照してください CAgeSee CObList::CObList for a listing of the CAge class.

次の例は、 GetHead 代入ステートメントの左側でを使用する方法を示しています。The following example illustrates the use of GetHead on the left side of an assignment statement.

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:: GetHeadPositionCObList::GetHeadPosition

このリストの先頭の要素の位置を取得します。Gets the position of the head element of this list.

POSITION GetHeadPosition() const;

戻り値Return Value

反復またはオブジェクトポインターの取得に使用できる位置の値。リストが空の場合は NULL です。A POSITION value that can be used for iteration or object pointer retrieval; NULL if the list is empty.

次の表は、に似た他のメンバー関数を示して CObList::GetHeadPosition います。The following table shows other member functions that are similar to CObList::GetHeadPosition.

クラスClass メンバー関数Member Function
CPtrListCPtrList POSITION GetHeadPosition () const;POSITION GetHeadPosition( ) const;
CStringListCStringList POSITION GetHeadPosition () const;POSITION GetHeadPosition( ) const;

Example

クラスの一覧については、「 coblist:: coblist 」を参照してください CAgeSee CObList::CObList for a listing of the CAge class.

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:: GetNextCObList::GetNext

RPosition によって識別されるリスト要素を取得し、 rPositionPOSITION リスト内の次のエントリの値に設定します。Gets the list element identified by rPosition, then sets rPosition to the POSITION value of the next entry in the list.

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

パラメーターParameters

rPositionrPosition
GetNext の、 GetHeadPosition 、またはその他のメンバー関数呼び出しによって返される位置値への参照。A reference to a POSITION value returned by a previous GetNext, GetHeadPosition, or other member function call.

戻り値Return Value

GetHeadの戻り値の説明を参照してください。See the return value description for GetHead.

解説Remarks

GetNextまたはへの呼び出しを使用して初期位置を設定した場合は、前方反復ループでを使用でき GetHeadPosition Find ます。You can use GetNext in a forward iteration loop if you establish the initial position with a call to GetHeadPosition or Find.

位置の値がリスト内の有効な位置を表していることを確認する必要があります。You must ensure that your POSITION value represents a valid position in the list. 無効な場合は、Microsoft Foundation Class ライブラリのデバッグバージョンがアサートされます。If it is invalid, then the Debug version of the Microsoft Foundation Class Library asserts.

取得した要素がリスト内の最後の要素である場合、 rPosition の新しい値は NULL に設定されます。If the retrieved element is the last in the list, then the new value of rPosition is set to NULL.

イテレーション中に要素を削除することができます。It is possible to remove an element during an iteration. RemoveAtの例を参照してください。See the example for RemoveAt.

注意

MFC 8.0 では、このメソッドの const バージョンが、ではなくを返すように変更されてい const CObject* const CObject*& ます。As of MFC 8.0 the const version of this method has changed to return const CObject* instead of const CObject*&. この変更は、コンパイラが C++ 標準に準拠するようにするために行われました。This change was made to bring the compiler into conformance with the C++ standard.

次の表は、に似た他のメンバー関数を示して CObList::GetNext います。The following table shows other member functions that are similar to CObList::GetNext.

クラスClass メンバー関数Member Function
CPtrListCPtrList void*& GetNext( POSITION& rPosition );void*& GetNext( POSITION& rPosition );

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

const CString& GetNext( POSITION& rPosition ) const;const CString& GetNext( POSITION& rPosition ) const;

Example

クラスの一覧については、「 coblist:: coblist 」を参照してください CAgeSee CObList::CObList for a listing of the CAge class.

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      

このプログラムの結果は次のとおりです。The results from this program are as follows:

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

CObList:: GetPrevCObList::GetPrev

RPosition によって識別されるリスト要素を取得し、 rPosition をリスト内の前のエントリの位置の値に設定します。Gets the list element identified by rPosition, then sets rPosition to the POSITION value of the previous entry in the list.

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

パラメーターParameters

rPositionrPosition
前の GetPrev または他のメンバー関数呼び出しによって返される位置値への参照。A reference to a POSITION value returned by a previous GetPrev or other member function call.

戻り値Return Value

GetHeadの戻り値の説明を参照してください。See the return value description for GetHead.

解説Remarks

またはの呼び出しを使用し GetPrev て初期位置を設定した場合は、逆反復ループでを使用でき GetTailPosition Find ます。You can use GetPrev in a reverse iteration loop if you establish the initial position with a call to GetTailPosition or Find.

位置の値がリスト内の有効な位置を表していることを確認する必要があります。You must ensure that your POSITION value represents a valid position in the list. 無効な場合は、Microsoft Foundation Class ライブラリのデバッグバージョンがアサートされます。If it is invalid, then the Debug version of the Microsoft Foundation Class Library asserts.

取得した要素がリスト内の最初の要素の場合、 rPosition の新しい値は NULL に設定されます。If the retrieved element is the first in the list, then the new value of rPosition is set to NULL.

注意

MFC 8.0 では、このメソッドの const バージョンが、ではなくを返すように変更されてい const CObject* const CObject*& ます。As of MFC 8.0 the const version of this method has changed to return const CObject* instead of const CObject*&. この変更は、コンパイラが C++ 標準に準拠するようにするために行われました。This change was made to bring the compiler into conformance with the C++ standard.

次の表は、に似た他のメンバー関数を示して CObList::GetPrev います。The following table shows other member functions that are similar to CObList::GetPrev.

クラスClass メンバー関数Member Function
CPtrListCPtrList void*& GetPrev( POSITION& rPosition );void*& GetPrev( POSITION& rPosition );

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

const CString& GetPrev( POSITION& rPosition ) const;const CString& GetPrev( POSITION& rPosition ) const;

Example

クラスの一覧については、「 coblist:: coblist 」を参照してください CAgeSee CObList::CObList for a listing of the CAge class.

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
}

このプログラムの結果は次のとおりです。The results from this program are as follows:

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

CObList:: GetSizeCObList::GetSize

リスト要素の数を返します。Returns the number of list elements.

INT_PTR GetSize() const;

戻り値Return Value

一覧にあるアイテムの数です。The number of items in the list.

解説Remarks

リスト内の要素の数を取得するには、このメソッドを呼び出します。Call this method to retrieve the number of elements in the list.

次の表は、に似た他のメンバー関数を示して CObList::GetSize います。The following table shows other member functions that are similar to CObList::GetSize.

クラスClass メンバー関数Member Function
CPtrListCPtrList INT_PTR GetSize () const;INT_PTR GetSize( ) const;
CStringListCStringList INT_PTR GetSize () const;INT_PTR GetSize( ) const;

Example

クラスの一覧については、「 coblist:: coblist 」を参照してください CAgeSee CObList::CObList for a listing of the CAge class.

CObList list;

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

CObList:: GetTailCObList::GetTail

CObjectこのリストの末尾の要素を表すポインターを取得します。Gets the CObject pointer that represents the tail element of this list.

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

戻り値Return Value

GetHeadの戻り値の説明を参照してください。See the return value description for GetHead.

解説Remarks

を呼び出す前に、リストが空でないことを確認する必要があり GetTail ます。You must ensure that the list is not empty before calling GetTail. リストが空の場合は、Microsoft Foundation Class ライブラリのデバッグバージョンがアサートされます。If the list is empty, then the Debug version of the Microsoft Foundation Class Library asserts. IsEmptyを使用して、リストに要素が含まれていることを確認します。Use IsEmpty to verify that the list contains elements.

次の表は、に似た他のメンバー関数を示して CObList::GetTail います。The following table shows other member functions that are similar to CObList::GetTail.

クラスClass メンバー関数Member Function
CPtrListCPtrList const void *& gettail () const; void *& gettail ();const void*& GetTail( ) const; void*& GetTail( );
CStringListCStringList const CString& GetTail () const;CString& GetTail ();const CString& GetTail( ) const; CString& GetTail( );

Example

クラスの一覧については、「 coblist:: coblist 」を参照してください CAgeSee CObList::CObList for a listing of the CAge class.

CObList list;

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

CObList:: GetTailPositionCObList::GetTailPosition

このリストの末尾の要素の位置を取得します。リストが空の場合は NULL です。Gets the position of the tail element of this list; NULL if the list is empty.

POSITION GetTailPosition() const;

戻り値Return Value

反復またはオブジェクトポインターの取得に使用できる位置の値。リストが空の場合は NULL です。A POSITION value that can be used for iteration or object pointer retrieval; NULL if the list is empty.

次の表は、に似た他のメンバー関数を示して CObList::GetTailPosition います。The following table shows other member functions that are similar to CObList::GetTailPosition.

クラスClass メンバー関数Member Function
CPtrListCPtrList POSITION GetTailPosition () const;POSITION GetTailPosition( ) const;
CStringListCStringList POSITION GetTailPosition () const;POSITION GetTailPosition( ) const;

Example

クラスの一覧については、「 coblist:: coblist 」を参照してください CAgeSee CObList::CObList for a listing of the CAge class.

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:: InsertAfterCObList::InsertAfter

指定した位置にある要素の後に、このリストに要素を追加します。Adds an element to this list after the element at the specified position.

POSITION InsertAfter(
    POSITION position,
    CObject* newElement);

パラメーターParameters

positionposition
GetNext の、 GetPrev 、または Find メンバー関数呼び出しによって返される位置の値。A POSITION value returned by a previous GetNext, GetPrev, or Find member function call.

(NewelementnewElement
このリストに追加するオブジェクトポインター。The object pointer to be added to this list.

次の表は、に似た他のメンバー関数を示して CObList::InsertAfter います。The following table shows other member functions that are similar to CObList::InsertAfter.

クラスClass メンバー関数Member Function
CPtrListCPtrList Position InsertAfter ( 位置 位置 、void * newElement);POSITION InsertAfter( POSITION position , void * newElement );
CStringListCStringList Position InsertAfter (位置位置 、const CString& newElement );POSITION InsertAfter( POSITION position , const CString& newElement );

Position InsertAfter (position position , LPCTSTR newElement );POSITION InsertAfter( POSITION position , LPCTSTR newElement );

戻り値Return Value

Position パラメーターと 同じ位置の値。A POSITION value which is the same as the position parameter.

Example

クラスの一覧については、「 coblist:: coblist 」を参照してください CAgeSee CObList::CObList for a listing of the CAge class.

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

このプログラムの結果は次のとおりです。The results from this program are as follows:

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

CObList:: InsertBeforeCObList::InsertBefore

一覧の指定した位置にある要素の前に要素を追加します。Adds an element to this list before the element at the specified position.

POSITION InsertBefore(
    POSITION position,
    CObject* newElement);

パラメーターParameters

positionposition
GetNext の、 GetPrev 、または Find メンバー関数呼び出しによって返される位置の値。A POSITION value returned by a previous GetNext, GetPrev, or Find member function call.

(NewelementnewElement
このリストに追加するオブジェクトポインター。The object pointer to be added to this list.

戻り値Return Value

反復またはオブジェクトポインターの取得に使用できる位置の値。リストが空の場合は NULL です。A POSITION value that can be used for iteration or object pointer retrieval; NULL if the list is empty.

次の表は、に似た他のメンバー関数を示して CObList::InsertBefore います。The following table shows other member functions that are similar to CObList::InsertBefore.

クラスClass メンバー関数Member Function
CPtrListCPtrList InsertBefore (位置 の位置、void) * newElement);POSITION InsertBefore( POSITION position , void * newElement );
CStringListCStringList 位置 InsertBefore (位置 の位置、const CString& newElement );POSITION InsertBefore( POSITION position , const CString& newElement );

InsertBefore (位置 の位置、LPCTSTR) の 位置に挿入し newElement ます。POSITION InsertBefore( POSITION position , LPCTSTR newElement );

Example

クラスの一覧については、「 coblist:: coblist 」を参照してください CAgeSee CObList::CObList for a listing of the CAge class.

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      

このプログラムの結果は次のとおりです。The results from this program are as follows:

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

CObList:: IsEmptyCObList::IsEmpty

このリストに要素が含まれていないかどうかを示します。Indicates whether this list contains no elements.

BOOL IsEmpty() const;

戻り値Return Value

このリストが空の場合は0以外の。それ以外の場合は0です。Nonzero if this list is empty; otherwise 0.

次の表は、に似た他のメンバー関数を示して CObList::IsEmpty います。The following table shows other member functions that are similar to CObList::IsEmpty.

クラスClass メンバー関数Member Function
CPtrListCPtrList BOOL IsEmpty () const;BOOL IsEmpty( ) const;
CStringListCStringList BOOL IsEmpty () const;BOOL IsEmpty( ) const;

Example

RemoveAllの例を参照してください。See the example for RemoveAll.

CObList:: RemoveAllCObList::RemoveAll

このリストからすべての要素を削除し、関連付けられているメモリを解放し CObList ます。Removes all the elements from this list and frees the associated CObList memory.

void RemoveAll();

解説Remarks

リストが既に空の場合、エラーは生成されません。No error is generated if the list is already empty.

から要素を削除する場合は、 CObList 一覧からオブジェクトポインターを削除します。When you remove elements from a CObList, you remove the object pointers from the list. オブジェクト自体を削除するのはお客様の責任です。It is your responsibility to delete the objects themselves.

次の表は、に似た他のメンバー関数を示して CObList::RemoveAll います。The following table shows other member functions that are similar to CObList::RemoveAll.

クラスClass メンバー関数Member Function
CPtrListCPtrList void RemoveAll ();void RemoveAll( );
CStringListCStringList void RemoveAll ();void RemoveAll( );

Example

クラスの一覧については、「 coblist:: coblist 」を参照してください CAgeSee CObList::CObList for a listing of the CAge class.

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:: RemoveAtCObList::RemoveAt

指定した要素をこのリストから削除します。Removes the specified element from this list.

void RemoveAt(POSITION position);

パラメーターParameters

positionposition
リストから削除する要素の位置。The position of the element to be removed from the list.

解説Remarks

から要素を削除する場合は、 CObList 一覧からオブジェクトポインターを削除します。When you remove an element from a CObList, you remove the object pointer from the list. オブジェクト自体を削除するのはお客様の責任です。It is your responsibility to delete the objects themselves.

位置の値がリスト内の有効な位置を表していることを確認する必要があります。You must ensure that your POSITION value represents a valid position in the list. 無効な場合は、Microsoft Foundation Class ライブラリのデバッグバージョンがアサートされます。If it is invalid, then the Debug version of the Microsoft Foundation Class Library asserts.

次の表は、に似た他のメンバー関数を示して CObList::RemoveAt います。The following table shows other member functions that are similar to CObList::RemoveAt.

クラスClass メンバー関数Member Function
CPtrListCPtrList Void RemoveAt (位置位置 );void RemoveAt( POSITION position );
CStringListCStringList Void RemoveAt (位置位置 );void RemoveAt( POSITION position );

Example

リストの反復処理中に要素を削除する場合は注意してください。Be careful when removing an element during a list iteration. 次の例は、 GetNextの有効な 位置 の値を保証する削除手法を示しています。The following example shows a removal technique that guarantees a valid POSITION value for GetNext.

クラスの一覧については、「 coblist:: coblist 」を参照してください CAgeSee CObList::CObList for a listing of the CAge class.

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      

このプログラムの結果は次のとおりです。The results from this program are as follows:

RemoveAt example: A CObList with 2 elements

a CAge at $4C1E 65

a CAge at $4B22 21

CObList:: RemoveHeadCObList::RemoveHead

リストの先頭から要素を削除し、その要素へのポインターを返します。Removes the element from the head of the list and returns a pointer to it.

CObject* RemoveHead();

戻り値Return Value

CObjectリストの先頭にあるポインター。The CObject pointer previously at the head of the list.

解説Remarks

を呼び出す前に、リストが空でないことを確認する必要があり RemoveHead ます。You must ensure that the list is not empty before calling RemoveHead. リストが空の場合は、Microsoft Foundation Class ライブラリのデバッグバージョンがアサートされます。If the list is empty, then the Debug version of the Microsoft Foundation Class Library asserts. IsEmptyを使用して、リストに要素が含まれていることを確認します。Use IsEmpty to verify that the list contains elements.

次の表は、に似た他のメンバー関数を示して CObList::RemoveHead います。The following table shows other member functions that are similar to CObList::RemoveHead.

クラスClass メンバー関数Member Function
CPtrListCPtrList void * removehead ();void* RemoveHead( );
CStringListCStringList CString RemoveHead ();CString RemoveHead( );

Example

クラスの一覧については、「 coblist:: coblist 」を参照してください CAgeSee CObList::CObList for a listing of the CAge class.

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 ます。CObList::RemoveTail

リストの末尾から要素を削除し、その要素へのポインターを返します。Removes the element from the tail of the list and returns a pointer to it.

CObject* RemoveTail();

戻り値Return Value

リストの末尾にあるオブジェクトへのポインター。A pointer to the object that was at the tail of the list.

解説Remarks

を呼び出す前に、リストが空でないことを確認する必要があり RemoveTail ます。You must ensure that the list is not empty before calling RemoveTail. リストが空の場合は、Microsoft Foundation Class ライブラリのデバッグバージョンがアサートされます。If the list is empty, then the Debug version of the Microsoft Foundation Class Library asserts. IsEmptyを使用して、リストに要素が含まれていることを確認します。Use IsEmpty to verify that the list contains elements.

次の表は、に似た他のメンバー関数を示して CObList::RemoveTail います。The following table shows other member functions that are similar to CObList::RemoveTail.

クラスClass メンバー関数Member Function
CPtrListCPtrList void * removetail ();void* RemoveTail( );
CStringListCStringList CString RemoveTail ();CString RemoveTail( );

Example

クラスの一覧については、「 coblist:: coblist 」を参照してください CAgeSee CObList::CObList for a listing of the CAge class.

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:: SetAtCObList::SetAt

指定された位置に要素を設定します。Sets the element at a given position.

void SetAt(
    POSITION pos,
    CObject* newElement);

パラメーターParameters

pospos
設定する要素の位置。The POSITION of the element to be set.

(NewelementnewElement
CObjectリストに書き込むポインター。The CObject pointer to be written to the list.

解説Remarks

POSITION 型の変数は、リストのキーです。A variable of type POSITION is a key for the list. インデックスとは異なり、位置の値を自分で操作することはできません。It is not the same as an index, and you cannot operate on a POSITION value yourself. SetAt``CObjectリスト内の指定した位置にポインターを書き込みます。SetAt writes the CObject pointer to the specified position in the list.

位置の値がリスト内の有効な位置を表していることを確認する必要があります。You must ensure that your POSITION value represents a valid position in the list. 無効な場合は、Microsoft Foundation Class ライブラリのデバッグバージョンがアサートされます。If it is invalid, then the Debug version of the Microsoft Foundation Class Library asserts.

次の表は、に似た他のメンバー関数を示して CObList::SetAt います。The following table shows other member functions that are similar to CObList::SetAt.

クラスClass メンバー関数Member Function
CPtrListCPtrList void SetAt (POSITION pos , const CString& newElement );void SetAt( POSITION pos , const CString& newElement );
CStringListCStringList void SetAt (POSITION pos , LPCTSTR newElement );void SetAt( POSITION pos , LPCTSTR newElement );

Example

クラスの一覧については、「 coblist:: coblist 」を参照してください CAgeSee CObList::CObList for a listing of the CAge class.

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      

このプログラムの結果は次のとおりです。The results from this program are as follows:

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

関連項目See also

CObject クラスCObject Class
階層図Hierarchy Chart
CStringList クラスCStringList Class
CPtrList クラスCPtrList Class