인터넷 검색하면 map에대한 자료가 무수하게 나올텐데...
아래는 한빛미디어에서 무료로 제공해주는 C++ STL e-book 입니다.
설명이 아주 친절하게 잘 되어이는 책입니다.
다운로드하여 보시면 STL에 대하여 많은 도움이 되실겁니다.
참고 :
http://www.hanbit.co.kr/realtime/books/book_view.html?p_code=E6410226806
kaen 님이 쓰신 글 :
: 선배님들 안녕하십니까
:
: 현재 공과대학 4년재에 재학중인 4학년 학생입니다.
:
: MFC로 CListCtrl에 프로세스 목록이 갱신되는 것을 구현하기 위해
:
: 처음에는 vector를 썼으나, 데이터를 지우는 것이 용이하지 않다고 하여
:
: map을 쓰라고 하여... 바꾸게 되었고
:
: map에 관해 도무지 자료를 찾기가 힘들어서 선배님들의 도움을 얻고자 합니다..
:
: 우선 헤더부분에 제가 정의한 구조체는
:
: typedef struct ProcessMap
: {
: //boolean Survival;
: CString FileName;
: int PPID;
: int PID;// Key
: CString Path;
: } _ProcessMap;
:
: 입니다.
:
: 지금부터가 문제입니다.
: 본문에 프로세스 값 구하는 쪽에서
:
: map<int, _ProcessMap>mymap; //이렇게 선언하였습니다.( <Key, Value> )
:
: 그런데 저는 Key인 PID에 따라 나중에 비교하려고 저렇게 구조체를 선언하였으나,
:
: map의 pair는 한 쌍 밖에 안되기도 하고, PID값에 따라 저것들을 어떻게 집어넣을지가 도무지 모르겠습니다..
:
: 제가 한것은 이렇습니다.
: (여기서 pe32. 기타 등등은 PROCESSENTRY32와 CreateToolhelp32Snapshot로 얻었습니다.)
: _ProcessMap _ProcessMap2;
: _ProcessMap2.FileName = (LPCTSTR)pe32.szExeFile;
: _ProcessMap2.PPID = pe32.th32ParentProcessID;
: _ProcessMap2.PID = pe32.th32ProcessID;
: _ProcessMap2.Path = strPath;
:
: pair<int, _ProcessMap> NewItem(pe32.th32ProcessID, _ProcessMap2);
:
: mymap.insert(NewItem);
:
: 이렇게 까지 해줬는데 컴파일은 안해봤으며, 값이 제대로 들어있는지도 아직 모르겠습니다..
:
: 여기서 받은 값들을 리스트컨트롤에 보이도록 CListCtrl에 출력을 해줘야하는데
:
: i=0;
: for (map<int, _ProcessMap>::iterator k = mymap.begin(); k != mymap.end(); advance(k, 1))
: {
: m_ProcessLIst.InsertItem(i, );
: }
:
: 여기에서 어떻게 출력을 해야할지 난해합니다..
:
: 혹시 저랑 비슷한 경험을 겪으셨거나,
:
: STL Map 에서 구조체를 Map에 선언에 대해 도와주실분은 부탁드리겠습니다...ㅜ.ㅜ