我應該使用什麼語法來聲明具有四個值的多重映射?聲明一個具有四個值的多重映射
我想從類型unsigned int中添加兩個更多的值後面的sc_core sc_time值。
std::multimap<std::string, std::pair<sc_core::sc_time, sc_core::sc_time> >
感謝
我應該使用什麼語法來聲明具有四個值的多重映射?聲明一個具有四個值的多重映射
我想從類型unsigned int中添加兩個更多的值後面的sc_core sc_time值。
std::multimap<std::string, std::pair<sc_core::sc_time, sc_core::sc_time> >
感謝
你可以使用一個元組爲:
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
代替。
+1 @wschcom:如果您使用Typedefs,可以在這種情況下提供幫助。 ** typedef std :: tuple
儘管OP的含義可能是「*我想要一個鍵的四個值*」,不一定是「*我想要四個值* *作爲**一鍵*「。同樣的交易,只是交換他們的位置。我以同樣的方式閱讀,並對OP的含義感到困惑。 =) –
@JaminGrey編輯,以澄清爲什麼我切換訂單。 – Borgleader
只要創建一個完全像一對的模板,除了它是一個四元組。更笨拙的是,你可以使用一對結構或一對對。 – Gene