2013-11-27 9 views
5

Also habe ich eine map myMap, die ich statisch initialisieren möchte (muss auf diese Weise gemacht werden).C++ Karte statisch initialisieren <float, float [3]>

Ich mache folgendes:

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

Doch ich die folgende Fehlermeldung erhalten: „Feldinitialisierung muss eine Initialisiererliste sein“

Was ist falsch an der Syntax, die ich oben habe?

+0

Überprüfen Sie dies. http://StackOverflow.com/Questions/2172053/c-can-i-statical-initialize-a-stdmap-at-Compile-time –

+0

Ich habe das überprüft und ich glaube nicht, dass ich das gleiche Problem habe weil meine Versuche, eine Map vom Typ map statt map statisch zu initialisieren, gut funktionieren. Ich bekomme nur dieses Problem, wenn der Wert ein Array ist – user1855952

+0

Bitte überprüfen Sie diese http://StackOverflow.com/questions/138600/initializing-a-static-stdmapint-in-in-c – vinod

Antwort

3

sollten Sie array<float, 3> anstelle von "plain" 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

Ja, das ist, was es für mich repariert. Vielen Dank – user1855952

0

Ich vermute, dass Sie Visual Studio 2012 oder früher zu verwenden versuchen. Unterstützung für Initialisierungslisten auf Std :: map wurde erst Visual Studio 2013 hinzugefügt.