C++ 以不同的方式填充地图
这是填充映射的现有代码C++ 以不同的方式填充地图,c++,c++11,unordered-map,C++,C++11,Unordered Map,这是填充映射的现有代码 typedef unordered_map<std::string, SomeSet> StringToSetMap; StringToSetMap myMap; std::string str ("hello"); SomeSet &mySet = myMap[str]; //Map populates here typedef无序映射StringToSetMap; StringToSetMap myMap; std::string str(
typedef unordered_map<std::string, SomeSet> StringToSetMap;
StringToSetMap myMap;
std::string str ("hello");
SomeSet &mySet = myMap[str]; //Map populates here
typedef无序映射StringToSetMap;
StringToSetMap myMap;
std::string str(“hello”);
SomeSet&mySet=myMap[str]//地图在此填充
“SomeSet”是一个排版无序的集合
据我所知,地图只能以上述方式填充
这是如何以这种方式填充映射的?用于所讨论的下标运算符。请注意,操作员的描述是它
返回对映射到与键等效的键的值的引用,
如果该键不存在,则执行插入
另请注意:
返回值
如果没有包含key的元素,则引用新元素的映射值
存在的。否则,将引用现有元素的映射值
其密钥与密钥等效
“hello”不是地图中的一个键,因此它会被插入,并向您返回一个新的SomeSet
对象的引用
(注意:键可以是move-constructed也可以是copy-constructed,但无论哪种方式,值都始终是默认构造的。请确保为
SomeSet
!)具有默认构造函数)关于您链接到的问题的答案如何使这里的情况变得不清楚?值得指出的是,插入的元素将默认构造,因此,下标运算符只能在映射到具有默认构造函数的类型时使用。@scohe001,因此我也可以先填充mySet,然后执行myMap[str]=mySet
。是这样吗?@ontherocks当然myMap[str]
返回对新的SomeSet
对象的引用,然后将其设置为某物。它相当于SomeSet&thing=myMap[str];事物=我的集代码>