2011-11-19 38 views
10

內部列表的我可以使用下面的語法:使用地圖C++

std::map<int,std::list<int>> mAllData; 

,其中關鍵值(INT)將數據的ID,上述數據可能有多種類型,以便存儲所有這些對所述關鍵數值。我正在嘗試使用它。

+0

「之稱數據可能具有多張類型」 ......是'名單'只是那些類型中的一種?或者你的意思是你想要一個'list'來存儲除int之外的其他類型的實例嗎? – Pablo

+0

沒有數據會有多個實例,所以我想存儲在一個列表中的所有這些實例與它的ID(這將是關鍵值)存儲在一起。更多地解釋它舉一個例子,因爲我的數據中有一個ID爲「10」,這個值將坐在關鍵字的mAllData,那麼這個ID的數據可能會有ID爲10000,200000,40000的實例,所以我只想列出這些實例並將其與數據ID保持一致。 – user987316

+0

我不太瞭解你的問題,也沒有你的評論。你是說你想要一個ID有多個值?或者你想要一個ID有多個值,每個值有不同的類型? – Marlon

回答

23
std::map<int,std::list<int>> my_map; 
my_map[10].push_back(10000); 
my_map[10].push_back(20000); 
my_map[10].push_back(40000); 

你的編譯器可能不支持這兩個右尖括號是緊挨着對方呢,所以你可能需要std::map<int,std::list<int> > my_map

用C++ 11 my_map可以更有效地初始化:

std::map<int,std::list<int>> my_map {{10, {10000,20000,40000}}}; 

此外,如果你只是想一個方法來存儲每個鍵多個值,你可以使用std :: multimap中。

std::multimap<int,int> my_map; 
my_map.insert(std::make_pair(10,10000)); 
my_map.insert(std::make_pair(10,20000)); 

而且在C++ 11這可以寫成:

std::multimap<int,int> my_map {{10,10000},{10,20000}}; 
+0

我更喜歡你的答案,它更完整 –

+4

我不敢相信我不知道'std :: multimap'(我知道它,只是從來沒有使用它)!我通常使用'std :: map >'。太棒了......現在我覺得自己就像一個沒有經驗的愛好者。 – Marlon