我已经初始化了这样的地图:
map<string, double>* myMap = new map<string, double>();
此声明不能更改!
我试图像这样插入:
myMap["hi"] = 20.0;
和
myMap->insert ("hi", 20.0);
正确的方法是什么?
答案 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评论)