Emplace to std :: map of std :: map

时间:2017-02-24 10:01:24

标签: c++ c++11 visual-studio-2012 stl stdmap

我如何安慰std::map<std::string, std::map<std::string,std::string>>

尝试使用myMap.emplace(std::make_pair("STRING", std::make_pair("STR","STR")))但收到错误消息cannot convert std::pair<_Ty1,_Ty2> to const std::pair<_Ty1,_Ty2>

2 个答案:

答案 0 :(得分:0)

myMap.emplace(
      std::make_pair(
            "STR1"
         ,   std::map< std::string, std::string>(
                {
                   std::make_pair("STR2", "STR3")
                }
             )
      )
);

应该工作。

答案 1 :(得分:0)

使用std::piecewise_construct您可emplace()如下

   myMap.emplace(
      std::piecewise_construct,
      std::forward_as_tuple("STRING"),
      std::forward_as_tuple(
         std::initializer_list<std::pair<std::string const, std::string>>{
            {"STR", "STR"} }));

但是我认为在将"STR"放入其中之后立即安置一张空白地图并立即安置,如下所示

   myMap.emplace(std::piecewise_construct,
                 std::forward_as_tuple("STRING"),
                 std::forward_as_tuple()).first->second.emplace("STR", "STR");