C++ Map 嵌套
2016-01-14 17:57
756 查看
在开发项目过程中,需要保存一些动态信息,还需要方便查找,采用了嵌套的map来保存
具体如下:
class P2PDirectService
{
typedef std::map<INT, std::map<std::string, INT> > DevicePortsMap;
typedef DevicePortsMap::iterator DevicePortsMapIterator;
DevicePortsMap m_devicesPortsMap;
}
// 添加
P2PDirectService::GetAvaliableExternalAddress()
{
INT lcPort;
INT extPort;
std::map<std::string, INT> temp;
temp[devIp->AsCStr()] = extPort;
m_devicesPortsMap[lcPort] = temp;
}
// 查找
P2PDirectService::DoPortMapping(
/* [in] */const InternetAddress& localAddr,
/* [in] */
InternetAddress& externalAddr,
/* [in] */ LPCSTR srvType,
/* [in] */ LPCSTR protocol)
{
DevicePortsMapIterator multiIte;
std::map<std::string, INT>::iterator ite;
multiIte = m_devicesPortsMap.find(localAddr.GetPort());
if (multiIte != m_devicesPortsMap.end())
{
ite = multiIte->second.find(localAddr.GetLiteralAddress());
if (ite != multiIte->second.end())
{
externalAddr.SetPort((LONG)ite->second);
return S_OK;
}
}
}
具体如下:
class P2PDirectService
{
typedef std::map<INT, std::map<std::string, INT> > DevicePortsMap;
typedef DevicePortsMap::iterator DevicePortsMapIterator;
DevicePortsMap m_devicesPortsMap;
}
// 添加
P2PDirectService::GetAvaliableExternalAddress()
{
INT lcPort;
INT extPort;
std::map<std::string, INT> temp;
temp[devIp->AsCStr()] = extPort;
m_devicesPortsMap[lcPort] = temp;
}
// 查找
P2PDirectService::DoPortMapping(
/* [in] */const InternetAddress& localAddr,
/* [in] */
InternetAddress& externalAddr,
/* [in] */ LPCSTR srvType,
/* [in] */ LPCSTR protocol)
{
DevicePortsMapIterator multiIte;
std::map<std::string, INT>::iterator ite;
multiIte = m_devicesPortsMap.find(localAddr.GetPort());
if (multiIte != m_devicesPortsMap.end())
{
ite = multiIte->second.find(localAddr.GetLiteralAddress());
if (ite != multiIte->second.end())
{
externalAddr.SetPort((LONG)ite->second);
return S_OK;
}
}
}
相关文章推荐
- C++中四种强制类型转换的区别
- 基于Libevent最小根堆定时器的C++定时器实现
- 欢迎使用CSDN-markdown编辑器
- C++ 学习
- 详解C++编程中的主表达式与后缀表达式编写基础
- setjmp和longjmp解析
- C++ socket传输结构体
- treap 1286郁闷的出纳员.cpp
- C++引用
- 关于C++中用两个迭代器方式初始化string的知识
- C++调用java的过程
- C/C++动态分配与释放内存的区别详细解析
- Google C++ 编程规范 笔记
- 【C语言】有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student".
- 并查集_POJ 1182_食物链
- c/c++宏定义的基本用法
- 讲解C++编程中Address-of运算符&的作用及用法
- c语言实现动态指针数组Dynamic arrays
- C语言练习代码
- C语言技巧