mutilmap 的使用

mutilmap 的使用

分类: 应用程序-usermode   367人阅读  评论(2)  收藏  举报

 multimap<UINT, UINT> lObjMultiMap;
 
 typedef multimap<UINT, UINT>::iterator  MULTIMAP_ITERA;
 lObjMultiMap.insert( pair<int,int>(0,10) ); //添加元素
 lObjMultiMap.insert( pair<int,int>(0,1) );
 lObjMultiMap.insert( pair<int,int>(0,4) );    //key 为0的元素有3 个数值

 lObjMultiMap.insert( pair<int,int>(1,1) );
 lObjMultiMap.insert( pair<int,int>(1,11) );


MULTIMAP_ITERA  iter ;                               //遍历key 为 0的所有元素
pair<MULTIMAP_ITERA, MULTIMAP_ITERA > range ;
range = lObjMultiMap.equal_range(0);
for (iter=range.first; iter!=range.second; iter++)
{
 cout <<iter->first<<" "<<iter->second<<endl;
}
 // 删除指定key为 0 的所有元素
 lObjMultiMap.erase(0);

//删除指定key 为0,数值为10的一个元素
range = lObjMultiMap.equal_range(0);

for (iter=range.first; iter!=range.second; iter++)
{
 cout <<iter->first<<" "<<iter->second<<endl;

 if (iter->second == 10)
 {
  lObjMultiMap.erase(iter);
  break;
 }
}

 

转,multimap使用实例: 事件订阅,subscribeEvent(事件名,Event::subcribe(回调函数);
方法subcribe通过一个Map Container;
typedef std::multimap<Group, Connection> SlotContainer,添加到容器中,
d_slots.insert(std::pair<Group,Connection>(group,c));而在事件触发时,
Event操作()遍历每个订阅事件的函数,代码如下:
for (; iter != end_iter; ++iter)
    args.handled |= (*iter->second->d_subscriber)(args);
这样订阅事件的函数都会遍历回调到!

你可能感兴趣的:(c,iterator,应用程序-usermode)