프로그래밍 언어/C++
CAtlList 사용법 및 정리
copynull
2013. 2. 28. 11:09
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 // cmd.cpp : 콘솔 응용 프로그램에 대한 진입점을 정의합니다.//#include "stdafx.h"#include <atlcoll.h>// 예제 Book 클래스class CBook{public:CBook(int i) : mId(i) {}inline int GetId() { return mId; }private:int mId;};int _tmain(int argc, _TCHAR* argv[]){/* 선언 */CAtlList<CBook*> mBookList;CBook* book1 = new CBook(1);CBook* book2 = new CBook(2);CBook* book3 = new CBook(3);CBook* book4 = new CBook(4);/* 입력 */// 앞쪽에 추가mBookList.AddHead(book1);mBookList.AddHead(book3);// 뒤쪽에 추가mBookList.AddTail(book2);mBookList.AddTail(book4);// 다른 리스트의 값들을 전부 리스트에 추가한다CAtlList<CBook*> mBookListNew;CBook* book5 = new CBook(5);CBook* book6 = new CBook(6);mBookListNew.AddTail( book5 );mBookListNew.AddTail( book6 );// mBookListNew의 book5, book6이 전부 추가된다.mBookList.AddHeadList( &mBookListNew );mBookList.AddTailList( &mBookListNew );/* 검색 */POSITION pos = mBookList.Find(book4);/* 갯수 */DWORD count = mBookList.GetCount();/* 값 얻기 */// 앞쪽 값 하나 가져옴CBook* fBook = mBookList.GetHead();// 뒷쪽 값 하나 가져옴CBook* lBook = mBookList.GetTail();/* 위치 */// 시작 위치POSITION pos = mBookList.GetHeadPosition();// 마지막 위치POSITION tPos = mBookList.GetTailPosition();while( pos != NULL ){// Position으로 현재 값을 얻음 (포지션:현재)CBook* nBook = mBookList.GetAt(pos);// Position으로 현재 값을 얻음 (포지션:다음) (순방향 검색)CBook* aBook = mBookList.GetNext(pos);// Position으로 현재 값을 얻음 (포지션:이전) (역방향 검색)CBook* pBook = mBookList.GetPrev(pos);// 현재 값을 처음으로 이동mBookList.MoveToHead(pos);// 현재 값을 마지막으로 이동mBookList.MoveToTail(pos);}/* 기타 */// 서로 위치를 바꿈mBookList.SwapElements( pos, tPos );// 현재 포지션 이전에 값을 추가 (return : 추가한 포지션)POSITION nowPos = mBookList.InsertBefore( pos, book4 );// 현재 포지션 다음에 값을 추가 (return : 추가한 포지션)POSITION nowPos2 = mBookList.InsertAfter( pos, book4 );// 비어있는지 확인bool bEmpty = mBookList.IsEmpty();/* 삭제 */// 모두 삭제mBookList.RemoveAll();// 해당 포지션의 값을 삭제mBookList.RemoveAt(pos);// 리스트에서는 앞,뒤 값을 삭제하면서 값을 반환 (리스트에서 값 빼내오는 기능)CBook* bookFirst = mBookList.RemoveHead();CBook* bookLast = mBookList.RemoveTail();// 리스트에서 앞,뒤 값을 삭제 반환없음mBookList.RemoveHeadNoReturn();mBookList.RemoveTailNoReturn();delete book6;delete book5;delete book4;delete book3;delete book2;delete book1;return 0;}