如何插入 `std::map<string, double>* myMap`?

How to insert into `std::map<string, double>* myMap`?

我已经初始化了这样一个地图:

map<string, double>* myMap = new map<string, double>();

此声明不能更改!

我试着像这样插入:

myMap["hi"] = 20.0;

myMap->insert ("hi", 20.0);

正确的方法是什么?

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 评论)