2015-03-08 12 views
2

我想靜態初始化的地圖,其中包含一對靜態初始化:有一對地圖

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的功能。

回答

11

你錯過了一個大括號:

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

龍虎鬥這樣說,這是巨大的幫助,我想。 – 2015-03-08 17:42:29

1

編譯器認爲你想有兩個元素來初始化地圖。

正確的語法是:

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