我有一个复杂的 map 定义了
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);
但是当我尝试访问内部 map 时我遇到了问题 例如
data_list tmp;
tmp=TL2["AAAA"];
short i=tmp[1]; //I dont update i variable
当调试它时,我看到代码尝试向 map 添加新值。然后当 tmp var 为 const
时,这会导致错误
但是如果我使用 itrator 的循环这个工作正常 为什么这首先不起作用 谢谢赫兹
最佳答案
std::map<Key,Value>::operator[](Key const& k)
将寻找 key k
.如果未找到,它将插入一个新的 Value()
。并返回对此的引用。这是一个修改操作。因此,operator[]
是非常量。
关于c++ - 访问 map 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4993865/