读书人

map中嵌套map,查找的时候有有关问题

发布时间: 2012-03-09 21:42:52 作者: rapoo

map中嵌套map,查找的时候有问题
我定义 map<CString , map<long,POI_INFO> > m_mapPOI;
map<long,POI_INFO> mapPoi;
POI_INFO是自定义的结构体

//mapPoi已经插入了元素
插入元素:m_mapPOI.insert( pair< CString,map<long,POI_INFO> >(“ddd”,mapPoi) );

itrMap = m_mapPOI.begin();
itrPoi = itrMap->second.find(92629); //使用这个语句查找时:找到的Key值不是 92629 ,对应的value也不对 为什么??求解释


[解决办法]
你是不是改了 mapPoi
以为 m_mapPOI 这里面的 map<long,POI_INFO> 也跟着改呀???

这个不是可能的,stl统统都是传对象的哦, m_mapPOI 里的 是 mapPoi 的副本

兄弟,你这个大对象可以非常 损耗性能的哦!!!!
[解决办法]
map<CString , map<long,POI_INFO>* > m_mapPOI;


m_mapPOI[“ddd”] = &mapPoi;

这样试试吧。

ps 我只管用,没给你分析该不该这样用。。。。。这样至少能用 :)
[解决办法]
itrMap = m_mapPOI.find("ddd");
if (itrMap != m_mapPOI.end()) {
itrPoi = itrMap->second.find(92629);
}

那就这样试试吧

读书人网 >C++

热点推荐