C++ 放置到std::map的std::map

C++ 放置到std::map的std::map,c++,c++11,visual-studio-2012,stl,stdmap,C++,C++11,Visual Studio 2012,Stl,Stdmap,如何定位到std::map 尝试使用myMap.emplace(std::make_-pair(“STRING”,std::make_-pair(“STR”,“STR”))但收到错误消息无法将std::pair转换为const std::pairmyMap.emplace( std::make_对( “STR1” ,std::map( { std::组成配对(“STR2”、“STR3”) } ) ) ); 应该有效。使用std::pieclewise\u构造您可以emplace()如下所示

如何定位到
std::map

尝试使用myMap.emplace(std::make_-pair(“STRING”,std::make_-pair(“STR”,“STR”))但收到错误消息
无法将std::pair转换为const std::pair
myMap.emplace(
std::make_对(
“STR1”
,std::map(
{
std::组成配对(“STR2”、“STR3”)
}
)
)
);

应该有效。

使用
std::pieclewise\u构造
您可以
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"} }));
   myMap.emplace(std::piecewise_construct,
                 std::forward_as_tuple("STRING"),
                 std::forward_as_tuple()).first->second.emplace("STR", "STR");

您是否在嵌套映射的构造函数中包含了更奇怪的代码:
(std::initializer_list({std::make_pair(“STR2”,“STR3”)}))
,如果第一个变量不起作用。VS2012不支持初始化器列表:-(啊,是的,我没有注意到标签)(然后我有另一个坏主意,但它不是一个真正的放置-在外部创建嵌套映射,并将其作为参数传递给第一个std::make_pair。仅出于兴趣-C++'17即将到来,VS2012仍然是实际的?)在这种环境中,我必须使用旧的编译器,但无论如何,我将使用insert代替放置!Thx
myMap[“STRING]={{“STR”,“STR”};
:-)
   myMap.emplace(std::piecewise_construct,
                 std::forward_as_tuple("STRING"),
                 std::forward_as_tuple()).first->second.emplace("STR", "STR");