сбой hash_map при первой находке, когда размер равен нулю - PullRequest
1 голос
/ 11 декабря 2010

Я новичок в hash_map в c ++.Я должен преобразовать таблицу в hashmap.

Так я объявил и использую hash_map в своей программе

Я использую Microsoft Visual Studio.Этот код прекрасно работает, когда я запускаю его как отдельную программу, но при попытке запустить его как часть моего проекта происходит сбой приложения.Даже если на карте нет записей, hIter в функции set возвращает неверный указатель.Это из-за искажения памяти?Не могли бы вы помочь?

Если это куча повреждений, как я могу избежать этого?Можно ли как-нибудь создать хэш-карту с таким размером?

1 Ответ

5 голосов
/ 11 декабря 2010

hash_multimap <const char*, long > не делает то, что вы думаете, что делает. Ключ - указатель , а не строка. Ваша маленькая программа работает на удачу компилятора, использующего одну и ту же память для обоих строковых литералов "SwitchId". Это не относится к большему проекту.

Вместо этого используйте std::string в качестве ключа и, находясь здесь, переключитесь на std::unordered_multimap.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...