비고
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::GetNext 및 CAtlList::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);