2013-11-27 8 views
5

静的に初期化しようとしているマップmyMapがあります(このようにしなければなりません)。C++静的にマップを初期化する<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

あなたは代わりに「プレーン」arrrayのarray<float, 3>を使用する必要があります。

#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またはそれ以前のバージョンを使用しようとしていると思われます。 std :: mapの初期化リストのサポートはVisual Studio 2013まで追加されませんでした。

関連する問題