2012-02-13 24 views
7

Estoy tratando de usar un multimapa con una clave entera y valores de matriz de enteros con 2 elementos.Agregar valores de matriz a std :: multimap

typedef std::multimap<int,int[2]> reverseHeightMap; 
reverseHeightMap container; 

Cuando intento agregar valores de la siguiente manera:

container.insert(std::pair<int,int[2]>(5,{1,2})); 

me sale:

error C2143: syntax error: missing ')' before '{' 

que no puedo entender si estoy fallando en la definición de la estructura de datos o la inserción de la valor, o ambos. Gracias de antemano por la ayuda :)

Respuesta

8

No puede almacenar matrices en contenedores porque uno de los requisitos para los tipos de datos almacenados en contenedores STL es que son asignables; las matrices no son asignables.

Considere el uso de std::vector o std::array<int, 2>.

5

uso std::pair:

typedef std::multimap<int,std::pair<int,int>> reverseHeightMap; 

OR:

encapsulado int [2] en struct:

struct int_2 
{ 
    int i_0; 
    int i_1; 
}; 

typedef std::multimap<int,int_2> reverseHeightMap; 
Cuestiones relacionadas