C++ c++;:可变嵌套映射

C++ c++;:可变嵌套映射,c++,dictionary,variadic,random-access,C++,Dictionary,Variadic,Random Access,我希望在cpp中有一个类似python字典的容器,至少在以下方面: 键值结构(键可能仅限于一种类型) 变量值类型(可能仅限于某些pod类型[int、double、string]) 深度嵌套(任意深度,但不需要动态) 随机访问 访问类型是存储类型 因此,下面的例子充其量只能起作用 typedef DictionaryContainer<string, <int, string, bool>, 2> Dict; Dict mydict; //key-type is str

我希望在cpp中有一个类似python字典的容器,至少在以下方面:

  • 键值结构(键可能仅限于一种类型)
  • 变量值类型(可能仅限于某些pod类型[int、double、string])
  • 深度嵌套(任意深度,但不需要动态)
  • 随机访问
  • 访问类型是存储类型
因此,下面的例子充其量只能起作用

typedef DictionaryContainer<string, <int, string, bool>, 2> Dict;
Dict mydict; //key-type is string, value-type one of int, string or bool, nested to depth 2
mydict["a"] = 1;
mydict["b"] = true;
mydict["c"] = 'string';
mydict["d"] = Dict();
mydict["d"]["a"] = false;

std::any& dict_d_a = mydict["d"]["a"]; // stores a bool
std::string& dict_c = mydict["c"]; // possibly get<std::string>(mydict["c"])
typedef字典容器Dict;
Dict-mydict//键类型为字符串,值类型为int、string或bool之一,嵌套到深度2
mydict[“a”]=1;
mydict[“b”]=真;
mydict[“c”]=“字符串”;
mydict[“d”]=Dict();
mydict[“d”][“a”]=假;
std::any&dict_d_a=mydict[“d”][“a”];//贮存废物
std::string&dict_c=mydict[“c”];//可能得到(mydict[“c”])
外面有类似的东西吗?我发现了允许存储任意类型的容器,比如
boost::variant
,但它们不允许随机访问和递归定义的容器(据我所知)


是否有一些树/映射的实现可以这样使用?

Json库创建类似的类型。您实际上需要不同的实例来具有不同的值,还是可以使用
struct Dict{int a;bool b;std::string c;struct{bool a;}d;}?第五个弹头与C++中的第二个点不兼容。表达式具有静态类型,不能根据运行时信息而变化我的
BaseDictionary
实现受
NSDictionary
启发,支持大多数必需的语法和功能。它还接受各种类型的键。但是我不能共享我们的代码库。@Jarod42是的,JSON或YAML容器(解析后)的结构非常类似,我打赌我可以用这种方式包装库,这样我就可以用这种方式使用它们。然而,这是一个完整的库依赖关系,只是为了得到这个可能独立定义的结构。