使用一对静态初始化地图

时间:2015-03-08 16:48:30

标签: c++ c++11

我正在尝试静态初始化包含一对的地图:

typedef map<int, pair<int, int>> mytype;
static const mytype mymap = { 3, {3, 0} };

我正在使用Visual Studio 2013,但是我收到错误:

 error C2440: 'initializing' : cannot convert from 'initializer-list' to 'std::map<int,std::pair<int,int>,std::less<_Kty>,std::allocator<std::pair<const _Kty,_Ty>>>'

任何想法会导致什么?我认为VS2013具有此C ++ 11功能。

2 个答案:

答案 0 :(得分:12)

你错过了一套大括号:

static const mytype mymap = { { 3, {3, 0} } };
                            ^ ^    ^ 
                            | |    pair<int,int> (value)
                            | pair<const key, value> (map element)
                            map<key, value>

答案 1 :(得分:1)

编译器认为你想用两个元素初始化地图。

正确的语法是:

static const mytype mymap = { { 3, {3, 0} } };