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