C ++ unorderedmap矢量下标超出范围(c++ unorderedmap vector

2019-10-17 20:22发布

目前,当我一直在喊我的getFunction方法,我越来越讨厌的崩溃。 我的程序编译罚款,但是当我运行,并调用这个函数,我得到“调试断言失败!”,“表达:向量下标超出范围”。 不知道如何解决这个问题,因为我还没有做的在C ++得多了几年。

void* PluginMap::getFunction(char* pguid, char* fname){
    if(plugin_map.size()>0 && plugin_map.find(pguid)!=plugin_map.end())
    { 
        //plugin_map is an unorderedmap that is defined elsewhere.
        MicroMap* mm = &plugin_map[pguid];
        if((*mm).find(fname)!=(*mm).end())
        {
            //MicroMap is an unorderedmap that goes in plugin_map, and contains void*
            return (*mm)[fname];
        }
    }
    return 0;
}

任何帮助,将不胜感激。

Answer 1:

请避免的char *用的std :: unordered_map使用适当的std :: string,它应该是罚款。 字符*为指针类型,这可能会导致一个问题,除非你已经定义的std ::散列它。



文章来源: c++ unorderedmap vector subscript out of range