2013-07-07 70 views
2

我應該使用什麼語法來聲明具有四個值的多重映射?聲明一個具有四個值的多重映射

我想從類型unsigned int中添加兩個更多的值後面的sc_core sc_time值。

 std::multimap<std::string, std::pair<sc_core::sc_time, sc_core::sc_time> > 

感謝

+0

只要創建一個完全像一對的模板,除了它是一個四元組。更笨拙的是,你可以使用一對結構或一對對。 – Gene

回答

5

你可以使用一個元組爲:

std::tuple<key_type1, key_type2, key_typ3, key_typ4> 

例如:

#include <map> 
#include <string> 
#include <tuple> 

int main(int argc, char* argv[]) 
{ 
    std::map<std::tuple<int, int, float, float>, std::string> myMap; // if you meant 4 values as a key 
    std::map<std::string, std::tuple<int, int, float, float>> myMap2; // if you meant 4 values for each string key 

    return 0; 
} 

同時,我想指出,聲明一個地圖時,該鍵的模板參數首先是值類型(請參閱here)。你的帖子含糊不清,因此我不知道這四個值是否應該是關鍵或價值,所以我展示了兩種可能性。

編輯:由於賈敏灰色很好指出,可以縮短使用一個typedef這種深奧long類型:

typedef std::tuple<int, int, float, float> MyKeyType; 

一旦你做到了這一點,你可以在你的代碼中使用MyKeyType代替。

+0

+1 @wschcom:如果您使用Typedefs,可以在這種情況下提供幫助。 ** typedef std :: tuple MyReasonablyNamedType; ** –

+0

儘管OP的含義可能是「*我想要一個鍵的四個值*」,不一定是「*我想要四個值* *作爲**一鍵*「。同樣的交易,只是交換他們的位置。我以同樣的方式閱讀,並對OP的含義感到困惑。 =) –

+1

@JaminGrey編輯,以澄清爲什麼我切換訂單。 – Borgleader