// 创建MapStringToPtr
CMapStringToPtr m_prjFiles;
CStringList m_fileList;
m_fileList.AddTail(_T("C:\\a"));
m_fileList.AddTail(_T("C:\\b"));
m_fileList.AddTail(_T("C:\\c"));
// 遍历CStringList变量,添加到CMapStringToPtr
for(POSITION pos=m_fileList.GetHeadPosition();pos;m_fileList.GetNext(pos)){
ST_LINE_INFO* fi=new ST_LINE_INFO; // 一个自定义的结构,定义了strPath变量
fi->strPath=m_fileList.GetAt(pos);
void* rVal=NULL;
if(m_prjFiles.Lookup(fi->strName,rVal)){
delete fi;
fi = NULL;
}else{
m_prjFiles.SetAt(fi->strName,fi);
}
}
// 释放MapStringToPtr
for(POSITION pos=m_prjFiles.GetStartPosition();pos;){
CString strKey;
ST_LINE_INFO* val = NULL; // 注意这里必须是添加时的变量类型,如果用void*,则会有内存泄露。
m_prjFiles.GetNextAssoc(pos,strKey,(void*&)val); // 这里把定义的变量类型转换为void*&。
if (val)
{
delete val;
val = NULL;
}
}
m_prjFiles.RemoveAll();
CMapStringToPtr添加与释放
最新推荐文章于 2019-01-18 20:51:00 发布