微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C++:可变参数嵌套映射又名字典

如何解决C++:可变参数嵌套映射又名字典

我想在 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"])

那里有这样的东西吗?我发现允许存储任意类型的容器,例如 boost::variant,但它们不允许随机访问和递归定义的容器(据我所知)。

难道没有树/地图的一些实现可以以这种方式使用吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。