2012-02-12 19 views
5

¿Puede decirme cómo puedo escribir un mapa multidimensional? Para dos dimensiones mapa, hice lo siguiente:¿Cómo escribir mapas 3D en C++?

map<string, int> Employees 
Employees[“person1”] = 200; 

yo estaba tratando de usar algo similar a la siguiente para el mapeo 3D.

map<string, string, int> Employees; 
Employees[“person1”, “age”] = 200; 

¿Puede decirme la forma correcta de hacerlo?

y ¿Hay alguna manera de inicializar todos los elementos del mapa para que sean 0? Al igual que en una matriz, podemos decir int array[10]={0};

Respuesta

9

Necesita crear un mapa de mapas como ese.

map<string, map<string, int> > employees; 
employees["person1"]["age"] = 200; 
+3

que explican mucho. Gracias por mostrarlo con un ejemplo. –

+0

¿Hay alguna manera de inicializar todas las funciones del mapa para que sean 0? Al igual que en una matriz, podemos decir 'int array [10] = {0};' –

+0

La llamada al mapa [key] inicializa el objeto con el tipo de constructor por defecto. Para el entero esto es exactamente cero. Esto significa que para cualquier dos teclas elegidas al azar 'emplyees [" foo "] [" bar "] == 0' devolverá verdadero. –

3

En lugar de un mapa anidada, se puede utilizar como teclas de tupla; (Este es un código de C++ 11, también podría hacer lo mismo con boost::tuple).

#include<map> 
#include<tuple> 
#include<string> 
using namespace std; 
map<tuple<string,string>,int> m; 
int main(){ 
    m[make_tuple("person1","age")]=33; 
} 
-1

lo que está haciendo aquí no es la cartografía 3D, pero la cartografía 2D, how to use stl::map as two dimension array

mapeo 3D correcta será como

map<string, map<string, map<int, string> > > Employees; 
Employees[“person1”][“age”][20] = "26/10/2014";