如何使用初始化列表初始化地图

时间:2016-06-30 02:18:37

标签: c++11 dictionary stl initializer-list

我遇到了地图初始化问题。 我想要一张桌子来访问我的俄罗斯方块块的所有方向。 我已经尝试了很多方法来初始化它,但它似乎太复杂而无法初始化。

这次是错误信息:

错误C2440“初始化”:无法从“初始化列表”转换为“std :: map,std :: allocator< _Ty>>,std :: allocator>>>, std :: less< _Kty&gt ;,std :: allocator&gt ;,std :: allocator>>>>>>“WinApp c:\ codes \ learning \ winapp \ tetris.cpp 44

我想知道如何初始化这个表。

在我的     block 类:

typedef std::map<shapes, std::vector < std::vector<std::pair<int, int> > > > proj;
static proj dirs ;
<。>在.cpp文件中:

block::proj block::dirs = 

{
{ 6,{ { TL, TC, MR },{ TC, ML, BL } } },
{ 4,{ { TR, TC, ML },{ TC, MR, BR } } },
{ 5,{ { ML, MR, BC },{ TC, MR, BC },{ TC, ML, MR },{ TC, ML, BC } } },
{ 3,{ { TL, TC, ML } } },
{ 2,{ { { ML, BL, MR },{ TC, BC, BR },{ TR, ML, MR },{ TL, TC, BC } } } },
{ 1,{ { ML, BR, MR },{ TR, TC, BC },{ TR, TC, BC },{ TL, MR, ML },{ TC, BC, BL } } },
{ 0,{ { ML, MR,{ 2,0 },{ TC, BC,{ 0,2 } } } } }  // sticks out
};

我将这些对定义为const vars。

const   std::pair<int, int>    TL{ -1,-1 };      /* top left */
const   std::pair<int, int>     TC{ 0,-1 };        /* top center */
const   std::pair<int, int> TR{ 1,-1 };     /* top right */
const   std::pair<int, int>  ML{ -1,0 };              /* middle left */
const   std::pair<int, int>  MR{ 1,0 };               /* middle right */
const   std::pair<int, int>    BL{ -1,1 };       /* bottom left */
const   std::pair<int, int>   BC{ 0,1 };         /* bottom center */
const   std::pair<int, int>     BR{ 1,1 };       /* bottom right */

1 个答案:

答案 0 :(得分:0)

dirs声明的最后一行看起来错位的括号。尝试替换

{ 0,{ { ML, MR,{ 2,0 },{ TC, BC,{ 0,2 } } } } }

{ 0,{ { ML, MR,{ 2,0 } },{ TC, BC,{ 0,2 } } } }