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

时间:2019-05-05 15:12:59

标签: c++ pointers stdmap

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

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

此声明不能更改!

我试图像这样插入:

myMap["hi"] = 20.0;

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

正确的方法是什么?

1 个答案:

答案 0 :(得分:2)

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