【发布时间】:2011-07-07 17:11:02
【问题描述】:
各位,
我是一个 Python/C# 人,我正在努力学习 C++。
在 Python 中,我曾经做过类似的事情:myRoutes = {0:[1,2,3], 1:[[1,2],[3,4]], 2:[[1,2,3],[[1,2,3],[1,2,3]],[4]]}
基本上,当您拥有可变长度的数组并且不想为它们浪费二维矩阵时,将数组嵌套到字典中以跟踪它们是一个不错的选择。
在 C++ 中,我尝试了 std::map<int, std:map<int, std:map<int, int> > > 并且它有效,但我觉得必须有更好的方法来做到这一点。
我更喜欢坚持使用标准库,但我也可以接受像 boost 这样的流行库。
感谢您的帮助,
阿里
【问题讨论】:
-
祝你好运,将这种东西硬塞到 STL 数据结构中。你能做的最好的可能是
std::map<int, std::list<int>>或类似的具有固定数量的级别,而不是任意深度的数据结构,如在 Python 中。并不是说做不到,只是不简单。 -
@Chinmay,那么当您需要数组字典时,您在 C++ 中使用什么数据结构?
-
数组字典没问题。
std::map<int, std::list<int>>或std::map<int, std::vector<int>>可以很好地完成这项工作。问题是 your 数组可以容纳更多的数组,以此类推。正如@Phooji 所说,Boost::Any 或 Boost::Variant 可能会满足您的需求。 -
请记住,Python 是用 C 语言编写的,因此编写允许这样做的代码是非常可能的,但在做之前我会考虑很久。大多数时候,想要/需要这种代码是因为没有完全转变为用新语言思考。我敢打赌,您仍在尝试用 C++ 编写 Python 代码,恕我直言,这项努力注定要失败。
标签: c++ python arrays dictionary nested