C++ 在向量映射上使用初始值设定项列表

C++ 在向量映射上使用初始值设定项列表,c++,stl,c++11,C++,Stl,C++11,我一直在尝试使用新的0X标准初始化的映射,但似乎无法获得正确的语法。我想用key:value=1的单个条目创建一个映射: #包括 #包括 #包括 使用名称空间std; 映射A={1,{3,4}; .... 使用gcc 4.4.3,它会出现以下错误: 错误:调用std::map::map()时没有匹配的函数。 编辑 按照Cogwheel的建议,并添加额外的大括号,它现在编译时会显示一条警告,可以使用-fno-explute-init-list标志消除该警告。这样做有危险吗?正如上面的评论所提到的

我一直在尝试使用新的0X标准初始化
的映射,但似乎无法获得正确的语法。我想用key:value=1的单个条目创建一个映射:

#包括
#包括
#包括
使用名称空间std;
映射A={1,{3,4};
....
使用gcc 4.4.3,它会出现以下错误:

错误:调用std::map::map()时没有匹配的函数。

编辑


按照Cogwheel的建议,并添加额外的大括号,它现在编译时会显示一条警告,可以使用-fno-explute-init-list标志消除该警告。这样做有危险吗?

正如上面的评论所提到的,
{1,{3,4}
是映射中的一个元素,其中键是
1
,值是
{3,4}
。所以,您需要的是
{{1,{3,4}}}

简化错误:

error: no matching function for call to map<int,vector<int>>::map(<brace-enclosed initializer list>)
错误:调用map::map()没有匹配的函数

这不是一个精确的错误,但还是有点帮助

@YGL-修复,谢谢。但是仍然不能解决原来的问题。在4.4.1中,编译器遭受神经崩溃(内部错误)。也许4.5版本可以正常工作?它是否还缺少一对支架?
{1,{3,4}
不是地图中的一个条目吗?也就是说,它不应该是
{{1,{3,4}}}
error: no matching function for call to map<int,vector<int>>::map(<brace-enclosed initializer list>)