myMap
- указатель в вашем случае.Почему вы выделяете карту с new
?Сделайте это так:
map<string, double> myMap;
myMap["hi"] = 20.0;
Или, если вы все еще хотите выделить его динамически, разыменуйте указатель
(*myMap)["hi"] = 20.0;
или вызовите operator[]
с помощью ->
:
myMap->operator[]("hi") = 20.0;
insert
ожидает std::map::value_type
, что в вашем случае составляет std::pair<const string, double>
.Назовите это так:
myMap->insert(make_pair("hi", 20.0));
или
myMap->insert({"hi", 20.0});
Обратите внимание, что если запись с таким же ключом уже существует, использование квадратных скобок (любой формы) заменит значение этой записии использование insert (любая форма) ничего не сделает и оставит предыдущее значение в покое. (из комментария @aschepler)