Давайте на минутку предположим, что вы рассчитываете на кодировку ASCII.
Вы получаете доступ к map1
, используя индекс за пределами границ, когда символ '~'
. Целочисленное значение '~'
равно 126. Следовательно, ваша программа имеет неопределенное поведение.
Вы можете решить проблему, используя
std::map<char, int> map1;
Если вы хотите убедиться, что она имеет элемент для определенного набора символов, вы можете инициализировать его соответственно.
std::string init_string = "abcdefgh";
for ( char c : init_string )
{
map1[c] = 0;
}