Share via


CAtlList 클래스

이 클래스는 목록 개체를 만들고 관리하기 위한 메서드를 제공합니다.

구문

template<typename E, class ETraits = CElementTraits<E>>
class CAtlList

매개 변수

E
요소 형식입니다.

ETraits
요소를 복사하거나 이동하는 데 사용되는 코드입니다. 자세한 내용은 CElementTraits 클래스를 참조하세요.

멤버

공용 Typedefs

이름 설명
CAtlList::INARGTYPE

공용 생성자

속성 설명
CAtlList::CAtlList 생성자입니다.
CAtlList::~CAtlList 소멸자입니다.

공용 메서드

이름 설명
CAtlList::AddHead 목록의 헤드에 요소를 추가하려면 이 메서드를 호출합니다.
CAtlList::AddHeadList 목록의 헤드에 기존 목록을 추가하려면 이 메서드를 호출합니다.
CAtlList::AddTail 이 목록의 꼬리에 요소를 추가하려면 이 메서드를 호출합니다.
CAtlList::AddTailList 이 목록의 뒷부분에 기존 목록을 추가하려면 이 메서드를 호출합니다.
CAtlList::AssertValid 이 메서드를 호출하여 목록이 유효한지 확인합니다.
CAtlList::Find 이 메서드를 호출하여 지정된 요소의 목록을 검색합니다.
CAtlList::FindIndex 인덱스 값이 지정된 경우 이 메서드를 호출하여 요소의 위치를 가져옵니다.
CAtlList::GetAt 목록에서 지정된 위치에 있는 요소를 반환하려면 이 메서드를 호출합니다.
CAtlList::GetCount 목록에 있는 개체 수를 반환하려면 이 메서드를 호출합니다.
CAtlList::GetHead 목록의 머리글에 있는 요소를 반환하려면 이 메서드를 호출합니다.
CAtlList::GetHeadPosition 목록의 머리 위치를 가져오려면 이 메서드를 호출합니다.
CAtlList::GetNext 목록에서 다음 요소를 반환하려면 이 메서드를 호출합니다.
CAtlList::GetPrev 목록에서 이전 요소를 반환하려면 이 메서드를 호출합니다.
CAtlList::GetTail 목록의 뒷부분에 있는 요소를 반환하려면 이 메서드를 호출합니다.
CAtlList::GetTailPosition 목록의 꼬리 위치를 가져오려면 이 메서드를 호출합니다.
CAtlList::InsertAfter 지정한 위치 뒤에 새 요소를 목록에 삽입하려면 이 메서드를 호출합니다.
CAtlList::InsertBefore 지정한 위치 앞에 새 요소를 목록에 삽입하려면 이 메서드를 호출합니다.
CAtlList::IsEmpty 목록이 비어 있는지 확인하려면 이 메서드를 호출합니다.
CAtlList::MoveToHead 지정된 요소를 목록의 머리글로 이동하려면 이 메서드를 호출합니다.
CAtlList::MoveToTail 지정된 요소를 목록의 꼬리로 이동하려면 이 메서드를 호출합니다.
CAtlList::RemoveAll 목록에서 모든 요소를 제거하려면 이 메서드를 호출합니다.
CAtlList::RemoveAt 목록에서 단일 요소를 제거하려면 이 메서드를 호출합니다.
CAtlList::RemoveHead 목록의 머리글에 있는 요소를 제거하려면 이 메서드를 호출합니다.
CAtlList::RemoveHeadNoReturn 값을 반환하지 않고 목록의 머리에서 요소를 제거하려면 이 메서드를 호출합니다.
CAtlList::RemoveTail 목록의 뒷부분에 있는 요소를 제거하려면 이 메서드를 호출합니다.
CAtlList::RemoveTailNoReturn 값을 반환하지 않고 목록의 꼬리에 있는 요소를 제거하려면 이 메서드를 호출합니다.
CAtlList::SetAt 이 메서드를 호출하여 목록의 지정된 위치에 있는 요소의 값을 설정합니다.
CAtlList::SwapElements 이 메서드를 호출하여 목록의 요소를 교환합니다.

설명

이 클래스는 CAtlList 순차적으로 또는 값으로 액세스할 수 있는 순서가 지정되지 않은 개체의 순서가 지정된 목록을 지원합니다. CAtlList 목록은 이중으로 연결된 목록처럼 동작합니다. 각 목록에는 머리 및 꼬리가 있으며, 새 요소(또는 경우에 따라 목록)를 목록의 양쪽 끝에 추가하거나 특정 요소 앞이나 뒤에 삽입할 수 있습니다.

대부분의 메서드는 CAtlList 위치 값을 사용합니다. 이 값은 요소가 저장되는 실제 메모리 위치를 참조하기 위해 메서드에서 사용되며 직접 계산하거나 예측해서는 안 됩니다. 목록의 n번째 요소에 액세스해야 하는 경우 CAtlList::FindIndex 메서드는 지정된 인덱스에 해당하는 위치 값을 반환합니다. CAtlList::GetNextCAtlList::GetPrev 메서드를 사용하여 목록의 개체를 반복할 수 있습니다.

ATL에서 사용할 수 있는 컬렉션 클래스에 대한 자세한 내용은 ATL 컬렉션 클래스를 참조 하세요.

요구 사항

헤더: atlcoll.h

CAtlList::AddHead

목록의 헤드에 요소를 추가하려면 이 메서드를 호출합니다.

POSITION AddHead();
POSITION AddHead(INARGTYPE element);

매개 변수

요소
새 요소입니다.

Return Value

새로 추가된 요소의 위치를 반환합니다.

설명

첫 번째 버전을 사용하는 경우 복사 생성자가 아닌 기본 생성자를 사용하여 빈 요소가 만들어집니다.

예시

// Declare a list of integers
CAtlList<int> myList;

// Add some elements, each to the head of the list.
// As each new element is added, the previous head is
// pushed down the list.
myList.AddHead(42);
myList.AddHead(49);

// Confirm the value currently at the head of the list
ATLASSERT(myList.GetHead() == 49);

// Confirm the value currently at the tail of the list
ATLASSERT(myList.GetTail() == 42);   

CAtlList::AddHeadList

목록의 헤드에 기존 목록을 추가하려면 이 메서드를 호출합니다.

void AddHeadList(const CAtlList<E, ETraits>* plNew);

매개 변수

plNew
추가할 목록입니다.

설명

plNew가 가리키는 목록은 기존 목록의 시작 부분에 삽입됩니다. 디버그 빌드에서 plNew가 NULL과 같으면 어설션 오류가 발생합니다.

예시

// Define two lists of integers
CAtlList<int> myList1;
CAtlList<int> myList2;

// Fill up the first list
myList1.AddTail(1);
myList1.AddTail(2);
myList1.AddTail(3);

// Add an element to the second list
myList2.AddTail(4);

// Insert the first list into the second
myList2.AddHeadList(&myList1);

// The second list now contains:
// 1, 2, 3, 4   

CAtlList::AddTail

이 목록의 꼬리에 요소를 추가하려면 이 메서드를 호출합니다.

POSITION AddTail();
POSITION AddTail(INARGTYPE element);

매개 변수

요소
추가할 요소입니다.

Return Value

새로 추가된 요소의 POSITION을 반환합니다.

설명

첫 번째 버전을 사용하는 경우 복사 생성자가 아닌 기본 생성자를 사용하여 빈 요소가 만들어집니다. 요소가 목록의 끝에 추가되므로 이제는 꼬리가 됩니다. 이 메서드는 빈 목록과 함께 사용할 수 있습니다.

예시

// Define the list
CAtlList<int> myList;

// Add elements to the tail
myList.AddTail(1);
myList.AddTail(2);
myList.AddTail(3);

// Confirm the current head of the list
ATLASSERT(myList.GetHead() == 1);

// Confirm the current tail of the list
ATLASSERT(myList.GetTail() == 3);   

CAtlList::AddTailList

이 목록의 뒷부분에 기존 목록을 추가하려면 이 메서드를 호출합니다.

void AddTailList(const CAtlList<E, ETraits>* plNew);

매개 변수

plNew
추가할 목록입니다.

설명

plNew가 가리키는 목록은 목록 개체의 마지막 요소(있는 경우) 뒤에 삽입됩니다. 따라서 plNew 목록의 마지막 요소는 꼬리가 됩니다. 디버그 빌드에서 plNew가 NULL과 같으면 어설션 오류가 발생합니다.

예시

// Define two integer lists
CAtlList<int> myList1;
CAtlList<int> myList2;

// Fill up the first list
myList1.AddTail(1);
myList1.AddTail(2);
myList1.AddTail(3);

// Add an element to the second list
myList2.AddTail(4);

// Insert the first list into the second
myList2.AddTailList(&myList1);

// The second list now contains:
// 4, 1, 2, 3   

CAtlList::AssertValid

이 메서드를 호출하여 목록이 유효한지 확인합니다.

void AssertValid() const;

설명

디버그 빌드에서 목록 개체가 유효하지 않으면 어설션 오류가 발생합니다. 유효하려면 빈 목록에는 NULL을 가리키는 머리 및 꼬리가 모두 있어야 하며 비어 있지 않은 목록에는 유효한 주소를 가리키는 머리 및 꼬리가 모두 있어야 합니다.

예시

// Define the list
CAtlList<int> myList;

// AssertValid only exists in debug builds
#ifdef _DEBUG
myList.AssertValid();
#endif   

CAtlList::CAtlList

생성자입니다.

CAtlList(UINT nBlockSize = 10) throw();

매개 변수

nBlockSize
블록 크기입니다.

설명

개체의 생성자입니다 CAtlList . 블록 크기는 새 요소가 필요할 때 할당된 메모리 양에 대한 측정값입니다. 블록 크기가 클수록 메모리 할당 루틴에 대한 호출이 줄어들지만 더 많은 리소스를 사용합니다.

예시

// Define two lists
CAtlList<int> myList1;
CAtlList<double> myList2;   

CAtlList::~CAtlList

소멸자입니다.

~CAtlList() throw();

설명

CAtlList::RemoveAll 호출을 포함하여 할당된 모든 리소스를 해제하여 목록에서 모든 요소를 제거합니다.

디버그 빌드에서는 호출 RemoveAll후 목록에 일부 요소가 여전히 포함된 경우 어설션 오류가 발생합니다.

CAtlList::Find

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

POSITION Find(INARGTYPE element, POSITION posStartAfter = NULL) const throw();

매개 변수

요소
목록에서 찾을 요소입니다.

posStartAfter
검색의 시작 위치입니다. 값을 지정하지 않으면 검색이 헤드 요소로 시작됩니다.

Return Value

찾은 경우 요소의 POSITION 값을 반환하고, 그렇지 않으면 NULL을 반환합니다.

설명

디버그 빌드에서 목록 개체가 유효하지 않거나 posStartAfter 값이 범위를 벗어나면 어설션 오류가 발생합니다.

예시

// Define the integer list
CAtlList<int> myList;

// Populate the list
myList.AddTail(100);
myList.AddTail(200);
myList.AddTail(300);
myList.AddTail(400);

// Find the '300' element in the list,
// starting from the list head.
POSITION myPos = myList.Find(300);

// Confirm that the element was found
ATLASSERT(myList.GetAt(myPos) == 300);   

CAtlList::FindIndex

인덱스 값이 지정된 경우 이 메서드를 호출하여 요소의 위치를 가져옵니다.

POSITION FindIndex(size_t iElement) const throw();

매개 변수

iElement
필수 목록 요소의 인덱스(0부터 시작)입니다.

Return Value

해당 POSITION 값을 반환하거나 iElement가 범위를 벗어난 경우 NULL을 반환합니다.

설명

이 메서드는 지정된 인덱스 값에 해당하는 POSITION을 반환하여 목록의 n번째 요소에 액세스할 수 있도록 합니다.

디버그 빌드에서 목록 개체가 유효하지 않으면 어설션 오류가 발생합니다.

예시

// Define the integer list
CAtlList<int> myList;

// Populate the list
for (int i = 0; i < 100; i++)
{
   myList.AddTail(i);
}

// Iterate through the entire list
for (size_t j = 0; j < myList.GetCount(); j++)
{
   size_t i = myList.GetAt(myList.FindIndex(j));
   ATLASSERT(i == j);
}   

CAtlList::GetAt

목록에서 지정된 위치에 있는 요소를 반환하려면 이 메서드를 호출합니다.

E& GetAt(POSITION pos) throw();
const E& GetAt(POSITION pos) const throw();

매개 변수

pos
특정 요소를 지정하는 POSITION 값입니다.

Return Value

요소에 대한 참조 또는 복사입니다.

설명

목록이면 constGetAt 요소의 복사본을 반환합니다. 이렇게 하면 할당 문의 오른쪽에서만 메서드를 사용할 수 있으며 목록을 수정하지 않도록 보호할 수 있습니다.

목록이 아닌 constGetAt 경우 요소에 대한 참조를 반환합니다. 이렇게 하면 할당 문의 양쪽에서 메서드를 사용할 수 있으므로 목록 항목을 수정할 수 있습니다.

디버그 빌드에서 pos가 NULL과 같으면 어설션 오류가 발생합니다.

예시

CAtlList::FindIndex에 대한 예제를 참조하세요.

CAtlList::GetCount

목록에 있는 개체 수를 반환하려면 이 메서드를 호출합니다.

size_t GetCount() const throw();

Return Value

목록에 있는 요소 수를 반환합니다.

예시

CAtlList::Find에 대한 예제를 참조하세요.

CAtlList::GetHead

목록의 머리글에 있는 요소를 반환하려면 이 메서드를 호출합니다.

E& GetHead() throw();
const E& GetHead() const throw();

Return Value

목록의 머리글에 있는 요소에 대한 참조 또는 복사본을 반환합니다.

설명

목록이면 constGetHead 목록의 머리글에 있는 요소의 복사본을 반환합니다. 이렇게 하면 할당 문의 오른쪽에서만 메서드를 사용할 수 있으며 목록을 수정하지 않도록 보호할 수 있습니다.

목록이 아닌 constGetHead 경우 목록의 머리글에 있는 요소에 대한 참조를 반환합니다. 이렇게 하면 할당 문의 양쪽에서 메서드를 사용할 수 있으므로 목록 항목을 수정할 수 있습니다.

디버그 빌드에서 목록의 헤드가 NULL을 가리키는 경우 어설션 오류가 발생합니다.

예시

CAtlList::AddHead에 대한 예제를 참조하세요.

CAtlList::GetHeadPosition

목록의 머리 위치를 가져오려면 이 메서드를 호출합니다.

POSITION GetHeadPosition() const throw();

Return Value

목록의 머리글에 있는 요소에 해당하는 POSITION 값을 반환합니다.

설명

목록이 비어 있으면 반환되는 값은 NULL입니다.

예시

// Define the integer list
CAtlList<int> myList;
int i;

// Populate the list
for (i = 0; i < 100; i++)
{
   myList.AddTail(i);
}

// Get the starting position value
POSITION myPos = myList.GetHeadPosition();

// Iterate through the entire list
i = 0;
int j;

do {
   j = myList.GetNext(myPos);
   ATLASSERT(i == j);
   i++;
} while (myPos != NULL);   

CAtlList::GetNext

목록에서 다음 요소를 반환하려면 이 메서드를 호출합니다.

E& GetNext(POSITION& pos) throw();
const E& GetNext(POSITION& pos) const throw();

매개 변수

pos
이전 호출, CAtlList::GetHeadPosition 또는 기타 CAtlList 메서드에서 GetNext반환된 POSITION 값입니다.

Return Value

목록이면 constGetNext 목록의 다음 요소 복사본을 반환합니다. 이렇게 하면 할당 문의 오른쪽에서만 메서드를 사용할 수 있으며 목록을 수정하지 않도록 보호할 수 있습니다.

목록이 아닌 constGetNext 경우 목록의 다음 요소에 대한 참조를 반환합니다. 이렇게 하면 할당 문의 양쪽에서 메서드를 사용할 수 있으므로 목록 항목을 수정할 수 있습니다.

설명

POSITION 카운터( pos)는 목록의 다음 요소를 가리키도록 업데이트되고, 요소가 더 이상 없으면 NULL로 업데이트됩니다. 디버그 빌드에서 pos가 NULL과 같으면 어설션 오류가 발생합니다.

예시

CAtlList::GetHeadPosition에 대한 예제를 참조하세요.

CAtlList::GetPrev

목록에서 이전 요소를 반환하려면 이 메서드를 호출합니다.

E& GetPrev(POSITION& pos) throw();
const E& GetPrev(POSITION& pos) const throw();

매개 변수

pos
이전 호출, CAtlList::GetTailPosition 또는 기타 CAtlList 메서드에서 GetPrev반환된 POSITION 값입니다.

Return Value

목록이면 constGetPrev 목록 요소의 복사본을 반환합니다. 이렇게 하면 할당 문의 오른쪽에서만 메서드를 사용할 수 있으며 목록을 수정하지 않도록 보호할 수 있습니다.

목록이 아닌 constGetPrev 경우 목록의 요소에 대한 참조를 반환합니다. 이렇게 하면 할당 문의 양쪽에서 메서드를 사용할 수 있으므로 목록 항목을 수정할 수 있습니다.

설명

POSITION 카운터( pos)는 목록의 이전 요소를 가리키도록 업데이트되고, 요소가 더 이상 없으면 NULL로 업데이트됩니다. 디버그 빌드에서 pos가 NULL과 같으면 어설션 오류가 발생합니다.

예시

CAtlList::GetTailPosition에 대한 예제를 참조하세요.

CAtlList::GetTail

목록의 뒷부분에 있는 요소를 반환하려면 이 메서드를 호출합니다.

E& GetTail() throw();
const E& GetTail() const throw();

Return Value

목록의 꼬리에 있는 요소에 대한 참조 또는 복사본을 반환합니다.

설명

목록이면 constGetTail 목록의 머리글에 있는 요소의 복사본을 반환합니다. 이렇게 하면 할당 문의 오른쪽에서만 메서드를 사용할 수 있으며 목록을 수정하지 않도록 보호할 수 있습니다.

목록이 아닌 constGetTail 경우 목록의 머리글에 있는 요소에 대한 참조를 반환합니다. 이렇게 하면 할당 문의 양쪽에서 메서드를 사용할 수 있으므로 목록 항목을 수정할 수 있습니다.

디버그 빌드에서 목록의 꼬리가 NULL을 가리키는 경우 어설션 오류가 발생합니다.

예시

CAtlList::AddTail에 대한 예제를 참조하세요.

CAtlList::GetTailPosition

목록의 꼬리 위치를 가져오려면 이 메서드를 호출합니다.

POSITION GetTailPosition() const throw();

Return Value

목록의 꼬리에 있는 요소에 해당하는 POSITION 값을 반환합니다.

설명

목록이 비어 있으면 반환되는 값은 NULL입니다.

예시

// Define the integer list
CAtlList<int> myList;
int i;

// Populate the list
for (i = 0; i < 100; i++)
{
   myList.AddHead(i);
}

// Get the starting position value
POSITION myP = myList.GetTailPosition();

// Iterate through the entire list
i = 0;
int j;

do {
   j = myList.GetPrev(myP);
   ATLASSERT(i == j);
   i++;
} while (myP != NULL);   

CAtlList::INARGTYPE

요소가 입력 인수로 전달될 때 사용되는 형식입니다.

typedef ETraits::INARGTYPE INARGTYPE;

CAtlList::InsertAfter

지정한 위치 뒤에 새 요소를 목록에 삽입하려면 이 메서드를 호출합니다.

POSITION InsertAfter(POSITION pos, INARGTYPE element);

매개 변수

pos
새 요소를 삽입할 위치 값입니다.

요소
삽입할 요소입니다.

Return Value

새 요소의 POSITION 값을 반환합니다.

설명

디버그 빌드에서 목록이 유효하지 않거나, 삽입이 실패하거나, 꼬리 뒤에 요소를 삽입하려고 하면 어설션 오류가 발생합니다.

예시

// Define the integer list
CAtlList<int> myList;

// Populate the list
POSITION myPos = myList.AddHead(1);
myPos = myList.InsertAfter(myPos, 2);
myPos = myList.InsertAfter(myPos, 3);

// Confirm the tail value is as expected
ATLASSERT(myList.GetTail() == 3);   

CAtlList::InsertBefore

지정한 위치 앞에 새 요소를 목록에 삽입하려면 이 메서드를 호출합니다.

POSITION InsertBefore(POSITION pos, INARGTYPE element);

매개 변수

pos
이 POSITION 값 앞에 새 요소가 목록에 삽입됩니다.

요소
삽입할 요소입니다.

Return Value

새 요소의 POSITION 값을 반환합니다.

설명

디버그 빌드에서 목록이 유효하지 않거나, 삽입이 실패하거나, 머리 앞에 요소를 삽입하려고 하면 어설션 오류가 발생합니다.

예시

// Define the integer list
CAtlList<int> myList;

// Populate the list
POSITION myPos = myList.AddHead(1);
myPos = myList.InsertBefore(myPos, 2);
myPos = myList.InsertBefore(myPos, 3);

// Confirm the head value is as expected
ATLASSERT(myList.GetHead() == 3);  

CAtlList::IsEmpty

목록이 비어 있는지 확인하려면 이 메서드를 호출합니다.

bool IsEmpty() const throw();

Return Value

목록에 개체가 없으면 true를 반환하고, 그렇지 않으면 false를 반환합니다.

예시

// Define the integer list
CAtlList<int> myList;

// Populate the list
myList.AddTail(1);
myList.AddTail(2);
myList.AddTail(3);
myList.AddTail(4);

// Confirm not empty
ATLASSERT(myList.IsEmpty() == false);

// Remove the tail element
myList.RemoveTailNoReturn();

// Confirm not empty
ATLASSERT(myList.IsEmpty() == false);

// Remove the head element
myList.RemoveHeadNoReturn();

// Confirm not empty
ATLASSERT(myList.IsEmpty() == false);

// Remove all remaining elements
myList.RemoveAll();

// Confirm empty
ATLASSERT(myList.IsEmpty() == true);   

CAtlList::MoveToHead

지정된 요소를 목록의 머리글로 이동하려면 이 메서드를 호출합니다.

void MoveToHead(POSITION pos) throw();

매개 변수

pos
이동할 요소의 POSITION 값입니다.

설명

지정한 요소가 현재 위치에서 목록의 머리글로 이동됩니다. 디버그 빌드에서 pos가 NULL과 같으면 어설션 오류가 발생합니다.

예시

// Define the integer list
CAtlList<int> myList;

// Populate the list
myList.AddTail(1);
myList.AddTail(2);
myList.AddTail(3);
myList.AddTail(4);

// Move the tail element to the head
myList.MoveToHead(myList.GetTailPosition());

// Confirm the head is as expected
ATLASSERT(myList.GetHead() == 4);

// Move the head element to the tail
myList.MoveToTail(myList.GetHeadPosition());

// Confirm the tail is as expected
ATLASSERT(myList.GetTail() == 4);   

CAtlList::MoveToTail

지정된 요소를 목록의 꼬리로 이동하려면 이 메서드를 호출합니다.

void MoveToTail(POSITION pos) throw();

매개 변수

pos
이동할 요소의 POSITION 값입니다.

설명

지정한 요소가 현재 위치에서 목록의 꼬리로 이동됩니다. 디버그 빌드에서 pos가 NULL과 같으면 어설션 오류가 발생합니다.

예시

CAtlList::MoveToHead에 대한 예제를 참조하세요.

CAtlList::RemoveAll

목록에서 모든 요소를 제거하려면 이 메서드를 호출합니다.

void RemoveAll() throw();

설명

이 메서드는 목록에서 모든 요소를 제거하고 할당된 메모리를 해제합니다. 모든 요소가 삭제되지 않거나 목록 구조가 손상된 경우 디버그 빌드에서 ATLASSERT가 발생합니다.

예시

CAtlList::IsEmpty에 대한 예제를 참조하세요.

CAtlList::RemoveAt

목록에서 단일 요소를 제거하려면 이 메서드를 호출합니다.

void RemoveAt(POSITION pos) throw();

매개 변수

pos
제거할 요소의 POSITION 값입니다.

설명

pos에서 참조하는 요소가 제거되고 메모리가 해제됩니다. 목록의 머리 또는 꼬리를 제거하는 데 사용할 RemoveAt 수 있습니다.

디버그 빌드에서 목록이 유효하지 않거나 요소를 제거하면 목록이 목록 구조의 일부가 아닌 메모리에 액세스하는 경우 어설션 오류가 발생합니다.

예시

// Define the integer list
CAtlList<int> myList;

// Populate the list
myList.AddTail(100);
myList.AddTail(200);
myList.AddTail(300);

// Use RemoveAt to remove elements one by one
myList.RemoveAt(myList.Find(100));
myList.RemoveAt(myList.Find(200));
myList.RemoveAt(myList.Find(300));

// Confirm all have been deleted
ATLASSERT(myList.IsEmpty() == true);   

CAtlList::RemoveHead

목록의 머리글에 있는 요소를 제거하려면 이 메서드를 호출합니다.

E RemoveHead();

Return Value

목록의 머리글에 있는 요소를 반환합니다.

설명

헤드 요소가 목록에서 삭제되고 메모리가 해제됩니다. 요소의 복사본이 반환됩니다. 디버그 빌드에서 목록이 비어 있으면 어설션 오류가 발생합니다.

예시

// Define the integer list
CAtlList<int> myList;

// Populate the list
myList.AddTail(100);
myList.AddTail(200);
myList.AddTail(300);

// Confirm the head of the list
ATLASSERT(myList.GetHead() == 100);

// Remove the head of the list
ATLASSERT(myList.RemoveHead() == 100);

// Confirm the new head of the list
ATLASSERT(myList.GetHead() == 200);   

CAtlList::RemoveHeadNoReturn

값을 반환하지 않고 목록의 머리에서 요소를 제거하려면 이 메서드를 호출합니다.

void RemoveHeadNoReturn() throw();

설명

헤드 요소가 목록에서 삭제되고 메모리가 해제됩니다. 디버그 빌드에서 목록이 비어 있으면 어설션 오류가 발생합니다.

예시

CAtlList::IsEmpty에 대한 예제를 참조하세요.

CAtlList::RemoveTail

목록의 뒷부분에 있는 요소를 제거하려면 이 메서드를 호출합니다.

E RemoveTail();

Return Value

목록의 꼬리에 있는 요소를 반환합니다.

설명

tail 요소가 목록에서 삭제되고 메모리가 해제됩니다. 요소의 복사본이 반환됩니다. 디버그 빌드에서 목록이 비어 있으면 어설션 오류가 발생합니다.

예시

// Define the integer list
CAtlList<int> myList;

// Populate the list
myList.AddTail(100);
myList.AddTail(200);
myList.AddTail(300);

// Confirm the tail of the list
ATLASSERT(myList.GetTail() == 300);

// Remove the tail of the list
ATLASSERT(myList.RemoveTail() == 300);

// Confirm the new tail of the list
ATLASSERT(myList.GetTail() == 200);   

CAtlList::RemoveTailNoReturn

값을 반환하지 않고 목록의 꼬리에 있는 요소를 제거하려면 이 메서드를 호출합니다.

void RemoveTailNoReturn() throw();

설명

tail 요소가 목록에서 삭제되고 메모리가 해제됩니다. 디버그 빌드에서 목록이 비어 있으면 어설션 오류가 발생합니다.

예시

CAtlList::IsEmpty에 대한 예제를 참조하세요.

CAtlList::SetAt

이 메서드를 호출하여 목록의 지정된 위치에 있는 요소의 값을 설정합니다.

void SetAt(POSITION pos, INARGTYPE element);

매개 변수

pos
변경할 요소에 해당하는 POSITION 값입니다.

요소
새 요소 값입니다.

설명

기존 값을 요소로 바꿉니다. 디버그 빌드에서 pos가 NULL과 같으면 어설션 오류가 발생합니다.

예시

// Define the integer list
CAtlList<int> myList;

// Populate the list
myList.AddTail(100);
myList.AddTail(200);

// Use SetAt to change the values stored in the head and
// tail of the list
myList.SetAt(myList.GetHeadPosition(), myList.GetHead() * 10);
myList.SetAt(myList.GetTailPosition(), myList.GetTail() * 10);

// Confirm the values
ATLASSERT(myList.GetHead() == 1000);
ATLASSERT(myList.GetTail() == 2000);   

CAtlList::SwapElements

이 메서드를 호출하여 목록의 요소를 교환합니다.

void SwapElements(POSITION pos1, POSITION pos2) throw();

매개 변수

pos1
첫 번째 POSITION 값입니다.

pos2
두 번째 POSITION 값입니다.

설명

지정된 두 위치의 요소를 바꿉니다. 디버그 빌드에서 위치 값이 NULL과 같으면 어설션 오류가 발생합니다.

예시

// Define the integer list
CAtlList<int> myList;

// Populate the list
for (int i = 0; i < 100; i++)
{
   myList.AddHead(i);
}

// Order is: 99, 98, 97, 96...
ATLASSERT(myList.GetHead() == 99);
ATLASSERT(myList.GetTail() == 0);

// Perform a crude bubble sort
for (int j = 0; j < 100; j++)
{
   for(int i = 0; i < 99; i++)
   {
      if (myList.GetAt(myList.FindIndex(i)) > 
         myList.GetAt(myList.FindIndex(i+1)))
      {
         myList.SwapElements(myList.FindIndex(i), myList.FindIndex(i+1));
      }
   }
}

// Order is: 0, 1, 2, 3...
ATLASSERT(myList.GetHead() == 0);
ATLASSERT(myList.GetTail() == 99);   

참고 항목

CList 클래스
클래스 개요