2013-03-16 3 views
0

В настоящее время, когда я вызываю метод 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; 
} 

Любая помощь будет принята с благодарностью.

+0

Вы используете итераторы? Потому что, если вы, я ничего не вижу в вашем коде. – 2013-03-16 04:06:58

+0

нет, я не использую итераторы. – robbert229

+1

Если вы используете std :: unordered_map, итератор сделает *** *** намного проще. Вот пример: http://www.cplusplus.com/reference/unordered_map/unordered_map/find/ – 2013-03-16 04:44:51

ответ

1

Пожалуйста, избегайте char * с std :: unordered_map использовать правильную std :: string, и все должно быть хорошо. char * берется как тип указателя и может вызвать проблему, если вы не определили для него std :: hash.

+0

спасибо, C++ немного сбивает меня с толку, поскольку Ive работает в js, а C# - сообщество стека удивительно! – robbert229

Смежные вопросы