2012-02-13 11 views
7

Sto tentando di utilizzare una multimap con una chiave intera e valori costituiti da una matrice di numeri interi con 2 elementi.Aggiunta di valori di array a std: multimap

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

Quando provo ad aggiungere i valori in questo modo:

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

ottengo:

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

non riesco a capire se mi sto riuscendo a definire la struttura di dati o di inserire la valore, o entrambi. Grazie in anticipo per l'aiuto :)

risposta

8

Non è possibile memorizzare gli array nei contenitori perché uno dei requisiti per i tipi di dati memorizzati nei contenitori STL è che sono assegnabili; gli array non sono assegnabili.

Considerare l'utilizzo di std::vector o std::array<int, 2>.

5

uso std::pair:

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

O:

incapsulare int [2] in struct:

struct int_2 
{ 
    int i_0; 
    int i_1; 
}; 

typedef std::multimap<int,int_2> reverseHeightMap; 
Problemi correlati