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
대한 자세한 내용은 컬렉션 문서를 참조하세요.
상속 계층 구조
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 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;
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
반환 값 설명을 참조하세요.
설명
호출 GetTailPosition
을 Find
사용하여 초기 위치를 설정하는 경우 역방향 반복 루프에서 사용할 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
또는 GetPrev
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 ); |
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
또는 GetPrev
Find
멤버 함수 호출에서 반환된 값입니다.
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
대해 작업할 수 없습니다. 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