2011-10-18 92 views
1

我想在C++中使用Map的矢量圖。 我有映射值的列表,我想在矢量中存儲爲映射。 我的要求是這樣的: 1.對於N列,我有一個值的映射。 2.我想維護每個我在N的地圖。在C++中實現Map的矢量圖

我試圖在Vector>中保持這一點。 請讓我知道如何使它工作。

我使用下面的代碼添加映射

void fun() 
{ 
vector< map < string, int> > myVect; 
myVect.push_back(new map< string, int>); 
myVect.push_back(new map< string, int>); 

map< string, int> entry1 = myVect[0]; 

entry1["ABC"] = 1; 
entry1["DEF"] = 2; 

map< string, int> entry2 = myVect[1]; 

entry1["ABC"] = 5; 
entry1["RKD"] = 9; 
} 

爲什麼不起作用?

+1

您到目前爲止嘗試過什麼?你似乎對你想達到什麼有非常明確的想法,那麼你的問題究竟在哪裏? –

+0

例如:vector x;
使我入門使用x.push_back(新地圖);
現在,要訪問向量中的條目,我使用地圖 entry = x [i]並將地圖值添加到它作爲entry.add() – Rahul

+0

好的,所以你似乎有它的工作。你有什麼問題? –

回答

4

在你的例子中,你正在推回使用一個指針(通過new),而不是通過const引用或值。你的'映射向量'聲明是好的,但插入導致編譯器錯誤。

若要推動映射到載體,應用形式:

std::map<std::string,int> m; 
// populate m if needed 
x.push_back(m); 

或者乾脆

x.push_back(std::map<std::string,int>()); 
如果你想要把一個空的地圖

請注意,這裏不需要new

1

賈斯汀回答它的很大一部分,但另一個問題是:

map< string, int> entry1 = myVect[0]; 

這將地圖從您的載體複製。您可能需要參考:

map< string, int>& entry1 = myVect[0];