带有键的映射,该键是c+中多个值的组合+; 我想要一个C++中的地图,其中的键是多个值的组合。我也可以使用stl和boost map_variable.find(key_type("keyStrning3", 1, "keyString2")).

带有键的映射,该键是c+中多个值的组合+; 我想要一个C++中的地图,其中的键是多个值的组合。我也可以使用stl和boost map_variable.find(key_type("keyStrning3", 1, "keyString2")).,c++,boost,stl,set,C++,Boost,Stl,Set,键值可以是字符串/整数,如下所示 typedef value_type int; typedef key(string, template(string,int), template(string,int)) key_type; typedef map(key_type, value_type) map_type; map_type map_variable; map_variable.insert(key_type("keyStrning1", 1, "keyString2"), 4); m

键值可以是字符串/整数,如下所示

typedef value_type int;
typedef key(string, template(string,int), template(string,int)) key_type;
typedef map(key_type, value_type) map_type;

map_type map_variable;
map_variable.insert(key_type("keyStrning1", 1, "keyString2"), 4);
map_variable.insert(key_type("keyStrning3", 1, "keyString2"), 5);
map_variable.find(key_type("keyStrning3", 1, "keyString2")).
现在,这张地图将包含两个条目,我将能够找到它,如下所示:

map_variable.find(key_type("keyStrning3", 1, "keyString2")).

<>我可以使用嵌套的映射,但是我想知道有没有使用Boost或C++ STL的方便的解决方案。< /P> < P>可以使用<代码> Boo::变体< /C> >(或者<代码> STD::变体< /代码>当C++ 17准备就绪时)。
map_variable.find(key_type("keyStrning3", 1, "keyString2")).
#包括
#包括
#包括
#包括
typedef int-ValueType;
typedef boost::variant StrOrInt;
typedef std::元组键类型;
typedef std::map MapType;
int main(int argc,char*argv[]){
MapType amap;
amap.insert(标准::使成对(

std::make_tuple(“string1”,“string2”,3),您可以拥有一个以这些成员为键的类。因此,您希望键是一个结构,或者可能是一个tuple?因为您真正需要做的就是实现比较运算符。第二个和第三个键可以是字符串或整数?因此
键类型(“ss”,1,“333”)
是一个有效的密钥,并且
密钥类型(“ss”、“aa”,1)
也应该是有效的。是的@giuseppe pes,
密钥类型(“ss”,1,“333”)
密钥类型(“ss”、“aa”,1)
都是有效的密钥,然后
std::variant
就是要走的路。。