我有一个定义访问地图数据
typedef short short1
typedef short short2
typedef map<short1,short2> data_list;
typedef map<string,data_list> table_list;
一个复杂的地图我有一个类,填补table_list
class GroupingClass
{
table_list m_table_list;
string Buildkey(OD e1){
string ostring;
ostring+=string(e1.m_Date,sizeof(Date));
ostring+=string(e1.m_CT,sizeof(CT));
ostring+=string(e1.m_PT,sizeof(PT));
return ostring;
}
void operator() (const map<short1,short2>::value_type& myPair) {
OD e1=myPair.second;
string key=Buildkey(e1);
m_table_list[key][e1.m_short1]=e1.m_short2;
}
operator table_list() {
return m_table_list;
}
};
,我通过
table_list TL2
GroupingClass gc;
TL2=for_each(mapOD.begin(), mapOD.end(), gc);
但是当我用它尝试访问内部地图我有问题 例如
data_list tmp;
tmp=TL2["AAAA"];
short i=tmp[1]; //I dont update i variable
和调试时,我看到的代码尝试添加新的价值map.then当TMP var为const
这项事业的错误
但如果我使用一个循环由itrator这项工作正常 为什么第一种方式没有工作 谢谢herzl
你确定地图中包含你所期望的吗?例如,行:`m_table_list [key] [e1.m_short2] = e1.m_short2;`看起来很可疑,关键和值是一样的... – Nim 2011-02-14 15:42:22
我检查地图是否包含其他方式:for(it = tmp.begin (); it!= tmp.end(); it ++){i = it-> first; J = IT->第二; } – 2011-02-14 15:46:12
请显示struct OD,它可能具有short的隐式构造函数,并具有名为m_short1,m_short2,m_Date,m_CT和m_PT的成员。函子通常是轻量级的,不包含从字符串到短地图的映射。 – CashCow 2011-02-14 16:45:52