CAtlList 클래스

비고

ATL(활성 템플릿 라이브러리)은 계속 지원됩니다. 그러나 더 이상 기능을 추가하거나 설명서를 업데이트하지 않습니다.

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

구문

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

매개 변수

요소
새 요소입니다.

반환 값

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

설명

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

예시

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

매개 변수

요소
추가할 요소입니다.

반환 값

새로 추가된 요소의 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
검색의 시작 위치입니다. 값을 지정하지 않으면 검색이 헤드 요소로 시작됩니다.

반환 값

찾은 경우 요소의 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부터 시작)입니다.

반환 값

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

반환 값

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

설명

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

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

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

예시

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

CAtlList::GetCount

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

size_t GetCount() const throw();

반환 값

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

예시

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

CAtlList::GetHead

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

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

반환 값

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

설명

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

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

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

예시

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

CAtlList::GetHeadPosition

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

POSITION GetHeadPosition() const throw();

반환 값

목록의 머리글에 있는 요소에 해당하는 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::GetHeadPositionCAtlList반환된 POSITION 값입니다.

반환 값

목록이면 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::GetTailPositionCAtlList반환된 POSITION 값입니다.

반환 값

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

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

설명

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

예시

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

CAtlList::GetTail

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

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

반환 값

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

설명

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

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

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

예시

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

CAtlList::GetTailPosition

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

POSITION GetTailPosition() const throw();

반환 값

목록의 꼬리에 있는 요소에 해당하는 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
새 요소를 삽입할 위치 값입니다.

요소
삽입할 요소입니다.

반환 값

새 요소의 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 값 앞에 새 요소가 목록에 삽입됩니다.

요소
삽입할 요소입니다.

반환 값

새 요소의 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();

반환 값

목록에 개체가 없으면 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();

반환 값

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

설명

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

예시

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

반환 값

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

설명

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 클래스
클래스 개요