hashmap boost
生活随笔
收集整理的這篇文章主要介紹了
hashmap boost
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
unordered_map
#include <boost/unordered_map.hpp> typedef struct {std::string pswd;bool inSetingPswd; }Pswd_t; typedef boost::unordered_map<uint32,Pswd_t> IdPswdMap; //設備信息表IdAddrMap m_devIdAddrMap;m_devIdAddrMap.clear();//添加元素 Addr_t dev; memset(&dev,0,sizeof(dev)); dev.addr=addr; dev.cntdown=MAXCNTDOWN; m_devIdAddrMap[devId]=dev;//查找元素 struct sockaddr_in *pdevAddr; IdAddrMap::iterator it2 = m_devIdAddrMap.find(devId); if (it2 == m_devIdAddrMap.end())pdevAddr=0; elsepdevAddr =&it2->second.addr;//刪除元素 IdAddrMap::iterator it = m_devIdAddrMap.find(value.head.dst.id); if (it != m_devIdAddrMap.end() )m_devIdAddrMap.erase(it);//遍歷map for(IdAddrMap::iterator it = pPlug->m_devIdAddrMap.begin(); it != pPlug->m_devIdAddrMap.end(); it++) {//cout<<it->first;//printf(" usr %d\n",it->second.cntdown);if(it->second.cntdown>0){it->second.cntdown--;}else if(it->second.cntdown<=0){pPlug->m_devIdAddrMap.erase(it);} } unordered_multimap
#include <boost/unordered_map.hpp> typedef boost::unordered_multimap<uint32,uint32> IdMap;//用戶id和設備id綁定表,first is usrIdIdMap m_devusrMap;//find usr by dev :devid-usrid //添加元素 m_devusrMap.insert(make_pair(devId,usrId));//查找元素for(IdMap::iterator it = m_devusrMap.find(devId); it !=m_devusrMap.end(); it++)//遍歷綁定過該設備的所有用戶 { // std::cout<<__LINE__<<" "<<it->first<<","<<it->second<<endl;usrId=it->second;it2 = m_usrIdAddrMap.find(usrId);//在所有這些用戶中找到第一個在線的用戶if (it2 != m_usrIdAddrMap.end()){pusrAddr =&it2->second.addr;break;}usrId=0xffffffff;pusrAddr=0; }// 查找元素,并從m_devusrMap解除for(IdMap::iterator it = m_devusrMap.find(devId); it !=m_usrdevMap.end(); it++) {std::cout<<it->first<<","<<it->second<<endl;if(it->second==usrId){m_devusrMap.erase(it);err= SMT_SUCCESS;res.value.szValue[0]=err;break;}if(it->first!=devId){break;} }//遍歷所有元素 for(IdMap::iterator it = m_devusrMap.begin();it !=m_usrdevMap.end(); ++it) {std::cout<<it->first<<","<<it->second<<endl; }
#include <boost/unordered_map.hpp> typedef struct {std::string pswd;bool inSetingPswd; }Pswd_t; typedef boost::unordered_map<uint32,Pswd_t> IdPswdMap; //設備信息表IdAddrMap m_devIdAddrMap;m_devIdAddrMap.clear();//添加元素 Addr_t dev; memset(&dev,0,sizeof(dev)); dev.addr=addr; dev.cntdown=MAXCNTDOWN; m_devIdAddrMap[devId]=dev;//查找元素 struct sockaddr_in *pdevAddr; IdAddrMap::iterator it2 = m_devIdAddrMap.find(devId); if (it2 == m_devIdAddrMap.end())pdevAddr=0; elsepdevAddr =&it2->second.addr;//刪除元素 IdAddrMap::iterator it = m_devIdAddrMap.find(value.head.dst.id); if (it != m_devIdAddrMap.end() )m_devIdAddrMap.erase(it);//遍歷map for(IdAddrMap::iterator it = pPlug->m_devIdAddrMap.begin(); it != pPlug->m_devIdAddrMap.end(); it++) {//cout<<it->first;//printf(" usr %d\n",it->second.cntdown);if(it->second.cntdown>0){it->second.cntdown--;}else if(it->second.cntdown<=0){pPlug->m_devIdAddrMap.erase(it);} } unordered_multimap
#include <boost/unordered_map.hpp> typedef boost::unordered_multimap<uint32,uint32> IdMap;//用戶id和設備id綁定表,first is usrIdIdMap m_devusrMap;//find usr by dev :devid-usrid //添加元素 m_devusrMap.insert(make_pair(devId,usrId));//查找元素for(IdMap::iterator it = m_devusrMap.find(devId); it !=m_devusrMap.end(); it++)//遍歷綁定過該設備的所有用戶 { // std::cout<<__LINE__<<" "<<it->first<<","<<it->second<<endl;usrId=it->second;it2 = m_usrIdAddrMap.find(usrId);//在所有這些用戶中找到第一個在線的用戶if (it2 != m_usrIdAddrMap.end()){pusrAddr =&it2->second.addr;break;}usrId=0xffffffff;pusrAddr=0; }// 查找元素,并從m_devusrMap解除for(IdMap::iterator it = m_devusrMap.find(devId); it !=m_usrdevMap.end(); it++) {std::cout<<it->first<<","<<it->second<<endl;if(it->second==usrId){m_devusrMap.erase(it);err= SMT_SUCCESS;res.value.szValue[0]=err;break;}if(it->first!=devId){break;} }//遍歷所有元素 for(IdMap::iterator it = m_devusrMap.begin();it !=m_usrdevMap.end(); ++it) {std::cout<<it->first<<","<<it->second<<endl; }
轉載于:https://www.cnblogs.com/-song/archive/2013/06/09/3331808.html
總結
以上是生活随笔為你收集整理的hashmap boost的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vs2010功能使用体验篇
- 下一篇: 更新Svn客户端后,右键菜单中没有Tor