2012-02-12 51 views
5

你能告訴我如何編寫多維地圖嗎?對於二維地圖,我做了以下操作:如何在C++中編寫3D映射?

map<string, int> Employees 
Employees[「person1」] = 200; 

我正在嘗試使用類似於以下內容的3D映射。

map<string, string, int> Employees; 
Employees[「person1」, 「age」] = 200; 

你能告訴我正確的方法嗎?

和有沒有辦法我可以初始化所有的地圖元素爲0?就像在一個陣列上,我們可以說int array[10]={0};

回答

9

您需要創建類似地圖的地圖。

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

解釋了很多。感謝你用一個例子來展示它。 – 2012-02-12 10:09:49

+0

有沒有一種方法可以將所有地圖函數初始化爲0?就像在數組上一樣,我們可以說'int array [10] = {0};' – 2012-02-12 10:25:33

+0

對map [key]的調用使用類型默認構造函數初始化對象。對於整數,這恰好爲零。這意味着對於任意兩個隨機選擇的鍵,emplyees [「foo」] [「bar」] == 0'將返回true。 – 2012-02-12 10:27:16

3

代替嵌套的地圖,你可以使用元組作爲鍵; (這是一個C++ 11代碼,你也可以使用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

你在這裏做的是不支持3D映射,但2D貼圖,how to use stl::map as two dimension array

正確的3D繪圖會像

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