在C++中制作嵌套列表的最佳方法是什么?

对于那些了解 Python 的人来说,解释我想要什么的最好方法是通过类比:

[1, [2, 3], 4, [5, [6]], 7]

显然,我可以实现我自己的类(模板)来做到这一点,但是如果标准库已经发明了这个轮子,我想避免重新发明它(或者至少,避免将我半生不熟的重新发明的版本放入我的项目)。

回答

在底层,python 列表是一个动态重新分配的数组,即与 a 相同的类型std::vector,其元素是动态的,即与 . 相同的类型std::any。所以这段代码最直接的模拟是

using p = std::vector<std::any>;

auto myList = p { 1, p { 2, 3 }, 4, p { 5, p { 6 } }, 7};

  • @allyourcode 你在谈论一棵树吗?
  • @allyourcode:那么您所做的实际上与您引用的python示例_非常_不同,因为python也可以让您编写类似 [1.0, [2, 3], "four", [lambda x: 5, [6]], 7]。
  • @allyourcode 主要问题是:你关心在数组中嵌套数组的可能性,还是能够存储所有可能的类型(或两者兼有?)。因为有很多选项取决于您的确切要求:例如已经提到的 `std::any`,`std::variant` 也可以在这里工作。但在我看来,您正在寻找像树/图这样的自定义数据结构。如果是这样,您可以尝试 [boost](https://www.boost.org/doc/libs/1_76_0/libs/graph/doc/index.html)。或者,根据您的确切要求,也许只是 `std::(multi)set` 就可以了。

以上是在C++中制作嵌套列表的最佳方法是什么?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>