【发布时间】:2023-03-30 20:07:01
【问题描述】:
我是 C++ 新手。我以前使用 Python 字典来存储数据,现在我正在使用 C++。 C++ 是否也有类似 Python 字典的数据结构?
我的场景如下,
我们在网络中有 4 个流,并为每个流分配一个路由。因此,在 python 中我们可以:
dictFlowRoute = {"flow1":(1,2,3,4), #flow1 is sent by node 1 to node 4.
"flow2":(1,5,3,4),
"flow3":(1,2,5,3),
"flow4":(2,3,1,5)}
根据给定的路由(dictFlowRoute),我们可以知道每对节点传输了哪些流。 例如“flow1”和“flow3”是通过节点对(1,2)传输的。在python中,我们可以生成另一个字典来存储这些数据,
dictNodePairwithFlow = { (1,2):("flow1","flow3"),
(2,3): ("flow1","flow4"),
(3,4): ("flow1","flow2"),
(1,5): ("flow2", "flow4"),
(5,3): ("flow2","flow3")}
因此,在C++中,如何呈现dictFlowRoute,如何根据给定的dictFlowRoute生成dictNodePairwithFlow?
【问题讨论】:
-
“C++ 是否也有类似 Python 字典的数据结构?”是的:
std::map -
就算没有,自己实现也没那么难。
-
作为参考,“字典”数据结构的语言无关名称是哈希映射。
-
@jfaccioni “字典”的通用名称是“关联数组”。 Hash Map 就是其中的一种实现方式。
-
另见
std::unordered_map,它与std::map 的主要区别在于它的实现——它是一个哈希映射,而std::map通常是一个树。现在您是一名 C++ 程序员,您可以考虑很多要优化的内容。
标签: python c++ data-structures stl