STL MAP结构不稳定,请问各位是否有解决办法
在使用HP-UX下使用STL MAP,发现某些KEY对应的的VALUE,并不是该KEY应该对应的值,而是另一个KEY的值,感觉其自身内存结构已经出错了。而换一台主机运行相同的程序,能够正常执行。请问是否在使用STL MAP有什么设置?
typedef map<string, string> MapDT;
typedef map<string, string>::iterator MapDTIterator;
……
MapDTIterator itermapdt;
string strSourceDimension;
string strSourceTarget;
……
初始化mapSourceDT
……
for(itermapdt=mapSourceDT.begin(); itermapdt!=mapSourceDT.end(); ++itermapdt){
strSourceDimension = itermapdt->first;
strSourceTarget = itermapdt->second;
if(mapTargetDT.find(strSourceDimension) == mapTargetDT.end()){//新的记录
mapTargetDT.insert(MapDT::value_type(strSourceDimension, strSourceTarget));
}else{//旧的记录
mapTargetDT[strSourceDimension]=smapTargetDT[strSourceDimension]+trSourceTarget;
}
}
现在就是更新后的mapTargetDT[strSourceDimension],再读取出来就有问题了(而且再mapTargetDT[strSourceDimension]基础上多了“逗号”)。感觉代码还是比较简单的,所以才觉得是不是STL MAP有什么需要设置或者注意的地方。而且就是怕线程太多而出错,因此这个程序是没有用线程实现。
[[it] 本帖最后由 hanren 于 2008-5-22 11:23 编辑 [/it]]