2013-11-27 11 views
5

Mam więc mapę myMap, którą próbuję zainicjować statycznie (musi to być zrobione w ten sposób).C++ statycznie zainicjalizuj mapę <float, float [3]>

robię co następuje:

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

Jednak ja otrzymuję następujący błąd: „Array inicjator musi być lista inicjator”

Co jest nie tak z powyższą składnią?

+0

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

+0

Sprawdziłem to i nie sądzę, że mam ten sam problem ponieważ moje próby statycznego zainicjowania mapy typu mapa zamiast mapy działają dobrze. Problem pojawia się tylko wtedy, gdy wartość jest tablicą – user1855952

+0

. Sprawdź to http://stackoverflow.com/questions/138600/initializing-a-static-stdmapint-in-in-c-in-c – vinod

Odpowiedz

3

Należy użyć array<float, 3> zamiast "zwykłego" 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

Tak, to jest to, co zostało naprawione dla mnie. Dziękuję Ci – user1855952

0

Podejrzewam, że próbujesz użyć Visual Studio 2012 lub wcześniej. Obsługa list inicjujących na std :: map nie została dodana przed Visual Studio 2013.