2013-11-27 5 views
5

Quindi ho una mappa myMap che sto provando a inizializzare staticamente (deve essere fatto in questo modo).C++ inizializza staticamente map <float, float [3]>

che sto facendo quanto segue:

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

Comunque sto ottenendo il seguente errore: "Array initializer deve essere un lista di inizializzazione"

Cosa c'è di sbagliato nella sintassi che ho sopra?

+0

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

+0

L'ho verificato e non penso di avere lo stesso problema perché i miei tentativi di inizializzare staticamente una mappa di tipo map invece di map funzionano bene. Ho riscontrato questo problema solo quando il valore è un array – user1855952

+0

, per favore controlla questo http://stackoverflow.com/questions/138600/initializing-a-static-stdmapint-int-in-c – vinod

risposta

3

Si consiglia di utilizzare array<float, 3> invece di arrray "pianura":

#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

Sì, questo è ciò che ha risolto il problema per me. Grazie – user1855952

0

Ho il sospetto che si sta tentando di utilizzare Visual Studio 2012 o versioni precedenti. Il supporto per gli elenchi di inizializzazione su std :: map non è stato aggiunto fino a Visual Studio 2013.