【发布时间】:2021-07-24 12:01:40
【问题描述】:
def recursiveDict():
return collections.defaultdict(recursiveDict)
# I can create a dictionary like the following
dic = recursiveDict()
dic['a'] = 1
dic['a']['a'] = 1
dic['a']['a']['a'] = 1
dic['a']['a']['a']['a'] = 1
and so on....
在使用 Python 和其他动态语言工作了 4 年后,我重新开始使用 C++。我希望能够使用 unordered_map 或 map 类创建一个递归嵌套列表(就像上面 Python 代码中显示的那样)。
我找不到这样做的方法。
我想要实现的是键应该是char/string类型,但要插入的值应该是int类型。
请让我知道如何做到这一点。
我最接近的就是这个
struct CharMap {
std::unordered_map<char,CharMap> map;
} root_map;
and use it like
root_map.map['a'].map['b'];
但是我应该重载什么才能获得上面的确切语法?
提前致谢。
【问题讨论】:
-
std::string呢? -
标准 C++ 库中没有类似的东西。你必须自己实现这个容器。在 C++ 中当然可以做到这一点,但这需要对 C++ 容器、算法和运算符重载有透彻的理解和了解。这在 Stackoverflow 上一两段短文无法解释,这方面的知识只能通过from a good C++ textbook 学习。祝你好运!
-
@SamVarshavchik ,也许我问问题的方式有问题。我很清楚所有这些概念。但我不知道如何编码。我也会对原始问题进行更改。
-
@πάνταῥεῖ ,字符串类对我有什么帮助?
-
你可能会从这个使用这种语法实现
Json解析器的库中找到一些灵感。 github.com/nlohmann/json 在此处查看示例:github.com/nlohmann/json#examples
标签: c++ recursion data-structures stl hashmap