2013-11-27 50 views
5

所以我有一個map myMap,我試圖靜態初始化(必須這樣做)。C++靜態初始化map <float,float [3]>

我做了以下內容:

myMap = 
{ 
    {415, {1, 52356, 2}}, 
    {256, {356, 23, 6}}, 
    //...etc 
}; 

不過,我發現了以下錯誤:「數組初始化函數必須是一個初始化列表。」

上面的語法有什麼問題?

+0

選中此項。 http://stackoverflow.com/questions/2172053/c-can-i-statically-initialize-a-stdmap-at-compile-time –

+0

我檢查了一下,我不認爲我有同樣的問題因爲我試圖靜態初始化map 而不是map 的映射工作得很好。我只得到這個問題,當值是一個數組 – user1855952

+0

請檢查這個http://stackoverflow.com/questions/138600/initializing-a-static-stdmapint-int-in-c – vinod

回答

3

您應該使用array<float, 3>而不是 「普通」 arrray:

#include <map> 
#include <array> 
#include <iostream> 

int main() 
{ 
    std::map<float, std::array<float, 3>> myMap 
    { 
     {415, std::array<float, 3>{1, 52356, 2}}, 
     {256, std::array<float, 3>{356, 23, 6}} 
     //...etc 
    }; 

    /* OR 

    std::map<float, std::array<float, 3>> myMap 
    { 
     {415, {{1, 52356, 2}}}, 
     {256, {{356, 23, 6}}} 
     //...etc 
    }; 

    */ 

    std::cout << myMap[415][0] << " " << myMap[256][1] << " " << std::endl; 

    return 0; 
} 
+0

是的,這是最終爲我修復它。謝謝 – user1855952

0

我懷疑你正試圖使用​​Visual Studio 2012或更早版本。直到Visual Studio 2013才支持std :: map上的初始化列表。