主要讨论multimap对同一键值对应的元素的访问
vector<CString> department;
multimap<CString,CString> nation;
multimap<CString,CString>::iterator p_map;
pair<multimap<CString,CString>::iterator, multimap<CString,CString>::iterator> ret;
department.push_back(_T("国务院部门组成"));
department.push_back(_T("国务院直属特设机构"));
department.push_back(_T("国务院直属机构"));
department.push_back(_T("国务院办事机构"));
//...
nation.insert(nation.end(),pair<CString,CString>(_T("国务院部门组成"),_T("外交部")));
nation.insert(nation.end(),pair<CString,CString>(_T("国务院部门组成"),_T("国防部")));
nation.insert(nation.end(),pair<CString,CString>(_T("国务院部门组成"),_T("发展改革委")));
//...
//按照department向量里面CString的顺序来对nation对应的键值进行处理
for(int i=0;i<department.size();i++)
{
CString depart;
//遍历nation,直到找到和department对应的键值为止
for (p_map = nation.begin() ; p_map != nation.end();)
{
ret = nation.equal_range(p_map->first);
depart=p_map->first;
if(depart.Compare(department[i])==0)
break;
else
p_map++;
}
//对对应的键值映射的值依次进行处理
for(p_map = ret.first; p_map != ret.second; ++p_map)
{
CString depart_end=(*p_map).second;
}
}