如何插入 `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 评论)
我已经初始化了这样一个地图:
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 评论)