В настоящее время, когда я вызываю метод getFunction, я получаю неприятный сбой. Моя программа компилируется отлично, но когда я запускаю и вызываю эту функцию, я получаю «Ошибка отладки с ошибкой!», «Выражение: векторный индекс вне диапазона». Не уверен, как с этим бороться, поскольку я не много делал на C++ в течение нескольких лет.C++ unorderedmap векторный индекс вне диапазона
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;
}
Любая помощь будет принята с благодарностью.
Вы используете итераторы? Потому что, если вы, я ничего не вижу в вашем коде. – 2013-03-16 04:06:58
нет, я не использую итераторы. – robbert229
Если вы используете std :: unordered_map, итератор сделает *** *** намного проще. Вот пример: http://www.cplusplus.com/reference/unordered_map/unordered_map/find/ – 2013-03-16 04:44:51