c++ - 访问 map 数据

标签 c++ stl dictionary

我有一个复杂的 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/

相关文章:

c++ - gluUnProject 不工作

c++ - 将 std::unique_ptr 传递给辅助函数

python - 使用列表中多个字典的条件从键中检索项目

c++ - 使用 cout 和 cin 时, "<<"和 ">>"运算符在做什么,我们为什么要使用它们?

c++ - SFINAE 构造问题

c++ - 生成从可执行文件调用的 c++ 方法列表

c++ - 如何避免 'implicit' 在 std::pair 中调用单参数构造函数

c++ - STL 是否包含适用于数组的迭代器?

c# - 简化构建字典

python - 删除项目后重命名字典键的更好方法?