다음을 통해 공유


CObList 수업

순차적으로 또는 포인터 값으로 액세스할 수 있는 비유니크 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 목록의 tail 요소를 반환합니다(비워 둘 수 없습니다).
CObList::GetTailPosition 목록의 tail 요소 위치를 반환합니다.
CObList::InsertAfter 지정된 위치 뒤에 새 요소를 삽입합니다.
CObList::InsertBefore 지정된 위치 앞에 새 요소를 삽입합니다.
CObList::IsEmpty 빈 목록 조건(요소 없음)을 테스트합니다.
CObList::RemoveAll 이 목록에서 모든 요소를 제거합니다.
CObList::RemoveAt 위치로 지정된 이 목록에서 요소를 제거합니다.
CObList::RemoveHead 목록의 머리에서 요소를 제거합니다.
CObList::RemoveTail 목록의 꼬리에서 요소를 제거합니다.
CObList::SetAt 지정된 위치에 요소를 설정합니다.

설명

CObList 목록은 이중으로 연결된 목록처럼 동작합니다.

형식 POSITION 변수는 목록의 키입니다. 변수를 POSITION 반복기로 사용하여 목록을 순차적으로 트래버스하고 책갈피로 배치할 수 있습니다. 그러나 위치는 인덱스와 동일하지 않습니다.

요소 삽입은 목록 머리, 꼬리 및 알려진 POSITION위치에서 매우 빠릅니다. 값 또는 인덱스별로 요소를 조회하려면 순차적 검색이 필요합니다. 목록이 길면 이 검색 속도가 느려질 수 있습니다.

CObList는 serialization 및 요소 덤프를 지원하기 위해 IMPLEMENT_SERIAL 매크로를 통합합니다. 포인터 목록이 CObject 오버로드된 삽입 연산자 또는 Serialize 멤버 함수를 사용하여 보관에 저장되면 각 CObject 요소가 차례로 serialize됩니다.

목록에 개별 CObject 요소의 덤프가 필요한 경우 덤프 컨텍스트의 깊이를 1 이상으로 설정해야 합니다.

개체가 CObList 삭제되거나 요소가 제거되면 포인터만 CObject 제거되고 참조하는 개체는 제거되지 않습니다.

에서 사용자 고유의 클래스를 파생시킬 수 있습니다 CObList. 파생된 개체에 대한 포인터를 포함하도록 설계된 새 목록 클래스는 CObject새 데이터 멤버와 새 멤버 함수를 추가합니다. 결과 목록은 포인터 CObject 를 삽입할 수 있으므로 형식이 안전하지 않습니다.

참고 항목

목록을 serialize하려는 경우 파생 클래스의 구현에서 매크로를 사용해야 IMPLEMENT_SERIAL 합니다.

사용에 CObList대한 자세한 내용은 컬렉션 문서를 참조하세요.

상속 계층 구조

CObject

CObList

요구 사항

머리글: afxcoll.h

CObList::AddHead

새 요소 또는 요소 목록을 이 목록의 머리글에 추가합니다.

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

매개 변수

newElement
CObject 목록에 추가할 포인터입니다.

pNewList
다른 CObList 목록에 대한 포인터입니다. 이 목록에 요소가 pNewList 추가됩니다.

Return Value

첫 번째 버전은 새로 삽입된 요소의 값을 반환 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 추가됩니다.

Return Value

첫 번째 버전은 새로 삽입된 요소의 값을 반환 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 로 할당됩니다. 메모리 할당이 실패하면 throw CMemoryException 됩니다.

다음 표에서는 다음과 유사한 다른 멤버 함수를 CObList::CObList보여 줍니다.

클래스 멤버 함수
CPtrList CPtrList( INT_PTR nBlockSize = 10 );
CStringList CStringList( INT_PTR nBlockSize = 10 );

예시

다음은 모든 컬렉션 예제에 CObject사용되는 파생 클래스 CAge 의 목록입니다.

// 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
검색의 시작 위치입니다.

Return Value

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부터 시작)입니다.

Return Value

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 이전 GetHeadPosition 또는 Find 멤버 함수 호출에서 반환된 값입니다.

Return Value

에 대한 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;

Return Value

요소 수를 포함하는 정수 값입니다.

다음 표에서는 다음과 유사한 다른 멤버 함수를 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;

Return Value

목록에 대한 포인터를 통해 액세스하는 경우 포인터 const CObListGetHead 를 반환합니다CObject. 이렇게 하면 함수를 대입 문의 오른쪽에서만 사용할 수 있으므로 목록이 수정되지 않도록 보호합니다.

목록에 직접 액세스하거나 포인터 CObListGetHead 를 통해 액세스하는 경우 포인터에 대한 참조를 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;

Return Value

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 입니다.

Return Value

에 대한 GetHead반환 값 설명을 참조하세요.

설명

또는 호출을 사용하여 초기 위치를 설정하는 경우 정방향 반복 루프에서 GetHeadPosition Find사용할 GetNext 수 있습니다.

값이 POSITION 목록에서 유효한 위치를 나타내는지 확인해야 합니다. 잘못된 경우 Microsoft Foundation 클래스 라이브러리의 디버그 버전이 어설션됩니다.

검색된 요소가 목록의 마지막 요소이면 새 값 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목록 요소를 가져온 다음 목록에서 이전 항목의 값으로 설정합니다 rPosition POSITION .

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

매개 변수

rPosition
이전 GetPrev 또는 다른 멤버 함수 호출에서 반환된 값에 대한 참조 POSITION 입니다.

Return Value

에 대한 GetHead반환 값 설명을 참조하세요.

설명

호출 GetTailPositionFind사용하여 초기 위치를 설정하는 경우 역방향 반복 루프에서 사용할 GetPrev 수 있습니다.

값이 POSITION 목록에서 유효한 위치를 나타내는지 확인해야 합니다. 잘못된 경우 Microsoft Foundation 클래스 라이브러리의 디버그 버전이 어설션됩니다.

검색된 요소가 목록의 첫 번째 요소인 경우 새 값 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;

Return Value

목록의 항목 수입니다.

설명

이 메서드를 호출하여 목록의 요소 수를 검색합니다.

다음 표에서는 다음과 유사한 다른 멤버 함수를 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;

Return Value

에 대한 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;

Return Value

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 이전 GetNext또는 GetPrevFind 멤버 함수 호출에서 반환된 값입니다.

newElement
이 목록에 추가할 개체 포인터입니다.

다음 표에서는 다음과 유사한 다른 멤버 함수를 CObList::InsertAfter보여 줍니다.

클래스 멤버 함수
CPtrList POSITION InsertAfter( POSITION position , void * newElement );
CStringList POSITION InsertAfter( POSITION position , const CString& newElement );

POSITION InsertAfter( POSITION position , LPCTSTR newElement );

Return Value

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 이전 GetNext또는 GetPrevFind 멤버 함수 호출에서 반환된 값입니다.

newElement
이 목록에 추가할 개체 포인터입니다.

Return Value

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;

Return Value

이 목록이 비어 있으면 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 );

예시

목록 반복 중에 요소를 제거할 때는 주의해야 합니다. 다음 예제에서는 유효한 POSITION 값을 GetNext보장하는 제거 기술을 보여 줍니다.

클래스 목록을 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();

Return Value

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();

Return Value

목록의 꼬리에 있던 개체에 대한 포인터입니다.

설명

를 호출 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 대해 작업할 수 없습니다. SetAtCObject 목록에서 지정된 위치에 포인터를 씁니다.

값이 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

참고 항목

CObject 클래스
계층 구조 차트
CStringList 수업
CPtrList 수업