我有一個定義訪問地圖數據
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