我应该使用什么语法来声明具有四个值的多重映射?声明一个具有四个值的多重映射
我想从类型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