У меня сложная карта, которая определила
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
, это приводит к ошибке
но если я использую цикл с помощью итератора, эта работа будет выполнена правильно
почему это не работает с первого взгляда
спасибо Герцль