2010-11-25 54 views
4

什麼樣的收集方法可以將一對(鍵和值)存儲在哪個鍵不唯一(技術上不會使它成爲我認爲的關鍵)?C++ Collections:如何創建類似於結構的地圖

某處在我的節目,我有:

typedef struct 
{ 
    int nKey; 
    string strFormType; 
} KeyPair; 

然後,我將存儲在使用這種結構一個矢量對象。

vector<KeyPair> vKeyList; 
KeyPair MenuOne; 
MenuOne.nKey = 1; 
MenuOne.strFormType = "Window"; 
vKeyList.push_back(MenuOne);  

MenuOne.nKey = 0; 
MenuOne.strFormType = "Window2"; 
vKeyList.push_back(MenuOne); 

MenuOne.nKey = 1; 
MenuOne.strFormType = "WindowC"; 
vKeyList.push_back(MenuOne);  

這基本上是我想如何存儲矢量對象。我的問題是,如果我要存儲一百個KeyPairs,我應該在循環中完成它,然後從存儲中讀取KeyPair,然後將其push_back作爲向量。

如果我要存儲這些密鑰對什麼:

KEY WINDOW 
1 Window 
0 Window2 
1 WindowC 
3 Windowfoo 
1 Window 
and so on... 

我不能將它存儲在一張地圖,因爲你必須有一個獨特的密鑰。 KeyPair的鑰匙並不是唯一的。任何建議?

+0

使用`multimap`作爲伊格納西奧巴斯克斯 - 艾布拉姆斯建議,或保持排序的矢量和使用`lower_bound`。 – dalle 2010-11-25 07:37:14

回答