multimap <string, struct>使用范例

 

头文件:#include <map>

声明和定义相关:

typedef struct tag_ALARM_INFO
    {
        __UINT32 dwAlarmSeq;      //流水号
        __UINT32 dwCreatedTime;   //创建的时间
    }ALARM_INFO;

 

typedef multimap < CString,ALARM_INFO > Alarm_mutimap;
typedef multimap < CString,ALARM_INFO >::iterator Alarm_mutimap_it;
typedef multimap < CString,ALARM_INFO >::size_type Alarm_mutimap_sz;

Alarm_mutimap m_mapIPToAlertInfo;

 

添加:

 ALARM_INFO pAlarmInfo ; 
 pAlarmInfo.dwAlarmSeq = dwAlarmSeq;
 pAlarmInfo.dwCreatedTime = INFOX_GetTickCount();//当前时间
 m_mapIPToAlertInfo.insert(multimap< CString,ALARM_INFO >::value_type((CString)lpszClientIP,(ALARM_INFO)pAlarmInfo));

 

查找:

Alarm_mutimap_sz icount = m_mapIPToAlertInfo.count((CString)lpszClientIP);

if(0 == icount)

{return;}

multimap < CString,ALARM_INFO>::const_iterator itAlarminfo = m_mapIPToAlertInfo.lower_bound((CString)lpszClientIP);
 if (itAlarminfo != m_mapIPToAlertInfo.end())
 {
  dwAlarmSeq = itAlarminfo->second.dwAlarmSeq;
 }

 

删除:

Alarm_mutimap_sz icount = m_mapIPToAlertInfo.count((CString)lpszClientIP);
 if (0 != icount)
 {
  Alarm_mutimap_it itAlarminfo = m_mapIPToAlertInfo.lower_bound((CString)lpszClientIP);
  if (itAlarminfo != m_mapIPToAlertInfo.end())
  {
   TRACE("delete %d",itAlarminfo->second.dwAlarmSeq);
   m_mapIPToAlertInfo.erase(itAlarminfo);   
  }
 }

清除超时:

__UINT32 dwCurrentTime = INFOX_GetTickCount();//当前时间
    ALARM_INFO pAlarmInfo ;

 Alarm_mutimap_it itAlarmInfo = m_mapIPToAlertInfo.begin();
 for (;m_mapIPToAlertInfo.end() != itAlarmInfo;itAlarmInfo++)
 {
  pAlarmInfo =itAlarmInfo->second;
  if ( (dwCurrentTime - pAlarmInfo.dwCreatedTime) >= dwMaxLife)
  {
   m_mapIPToAlertInfo.erase(itAlarmInfo);
   dwDeleteNum++;
   itAlarmInfo = m_mapIPToAlertInfo.begin();
  }
 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值