2013-11-27 36 views
5

Bu nedenle, statik olarak başlatmaya çalıştığım bir myMap haritam var (bu şekilde yapılmalıdır).C++ statik olarak haritayı başlatır <float, float [3]>

yapıyorum şu: Ben şu hatayı alıyorum Ancak

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

: "Dizi. Başlatıcısı başlatıcı listesi olmalıdır"

Yukarıdaki sözdiziminde sorun nedir?

+0

Bunu denetleyin. http://stackoverflow.com/questions/2172053/c-can-i-statically-initialize-a-stdmap-at-compile-time –

+0

Bunu kontrol ettim ve aynı sorunu yaşıyorum sanmıyorum çünkü yerine tipi bir harita haritasını statik olarak başlatmaya yönelik girişimlerim gayet iyi çalışıyor. Değer sadece bir dizi – user1855952

+0

olduğunda lütfen bu sorunu yaşıyorum. Bu http://stackoverflow.com/questions/138600/initializing-a-static-stdmapint-int-in-c adresini ziyaret edin – vinod

cevap

3

yerine "düz" arrray ait array<float, 3> kullanmalıdır:

#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

Evet, bu benim için onu düzeltmek için yara. teşekkür ederim – user1855952

0

Ben daha önce Visual Studio 2012 veya kullanmaya çalışıyorsanız şüpheleniyoruz. Std :: map üzerindeki başlatma listeleri için destek Visual Studio 2013'e kadar eklenmedi.