说白了是MFC与STL标准库的函数
CMapStringToString 映射表字符对字符
CObject MFC的大多数基类,很常见很基础的 一个类。
CObList 就是存储CObject的列表
CMapStringToOb 通过字符对CObList/CObject
这个用起来就有点意思了,可以建立一个基于CObject的类(不基于的话也行),CObList把这些类串起来(不基于的话这里需要强转),然后还可以CMapStringToOb来映射管理。说起来很简单,但是实际使用的话很强大,可以解决很多复杂的逻辑关系或者数据关系。
当然CMap<Key,ARG_Key,Values,ARG_Values> 更加强大,不仅是字符与CObject类,所有类型均可了。
map<key, Values> 虽然作为STL的函数,功能上感觉也差不多,map也好 vector也好,均能够存储一般数据类型、数据结构体、类的指针。
以下摘自: http://blog.sina.com.cn/s/blog_4b559bf30100gta6.html
在MFC中,有CMap相关的map类, 在 map中有map。
// Maps (aka Dictionaries)
class CMapWordToOb; // map from WORD to CObject*
class CMapWordToPtr; // map from WORD to void*
class CMapPtrToWord; // map from void* to WORD
class CMapPtrToPtr; // map from void* to void*
// Special String variants
class CMapStringToPtr; // map from CString to void*
class CMapStringToOb; // map from CString to CObject*
class CMapStringToString; // map from CString to CString
对于以上可以直接用stl中的一个map类型全部概况。
map<Word, CObject*>
map<Word, void*>
map<void*, Word>
map<void*, void*>
map<CString,void*>
map<CString, CObject*>
map<CString, CString>
由此,还是map简练。
再看遍历时,各个处理如下:
CMap<DWORD, DWORD&, ThreadInfo, ThreadInfo&> m_threadMap; //定义一组线程map
则在
ThreadInfo info;
DWORD Key ;
POSITION pos = threadMap.GetStartPosition();
while (pos != NULL)
{
threadMap.GetNextAssoc(pos, Key, info);
{
。。。
}
}
如果采用std中的map处理则
map<DWORD ,ThreadInfo>m_threadMap;
map<DWORD ,ThreadInfo>::iteraotr pIt;
for(pIt = m_threadMap.begin(); pIt != m_threadMap.end(); pIt++){
......
}
简单明了,胜过用mfc中繁芜而又不清晰的过程。所以多用std做程序开发比用一些过时的要好得多。
何须浪费时间去知道几个茴字的写法呢。是不是。