C ++必须在地图中正确处理字符串键

时间:2016-09-17 22:08:51

标签: c++ c++11

在我的 ClassA 中,我有一个类变量:

std::map<std::string, ClassB*> classBMap;

在一种方法中,我使用值初始化地图:

ClassA::init()
{
   for(int i = 0; i < 5; i++)
   {
       string tempKey = "key" + to_string(i + 1);
       ClassB* b = new ClassB();
       classBMap.insert(make_pair(tempKey, b));
   }
}

在其他方法中,可以通过更改ClassB *或删除带有ClassB内存释放的条目来访问 classBMap

我的问题与字符串 tempKey 键字符串有关。

1. classBMap中的字符串键是tempKey字符串的副本吗?

2。当我从classBMap中删除一个条目时,我应该对字符串键做什么特别的事情吗? (我现在只删除从地图中删除的ClassB指针。)

3. 偶尔,我收到以下错误(所有地图访问代码都受互斥锁保护):

  

错误读取变量:无法访问地址0x7f94ffffffe7

的内存

在此访问代码中:( it-&gt; first

std::map<string, ClassB*>::iterator it = classBMap.begin();
while(it != classBMap.end())
{
    string idKey = it->first;
    ...
}

导致此错误的可能原因是什么?

0 个答案:

没有答案