【发布时间】:2010-12-23 00:16:47
【问题描述】:
我有包含以下代码的 python 代码。
d = {}
d[(0,0)] = 0
d[(1,2)] = 1
d[(2,1)] = 2
d[(2,3)] = 3
d[(3,2)] = 4
for (i,j) in d:
print d[(i,j)], d[(j,i)]
不幸的是,循环遍历 python 中的所有键对于我的目的来说还不够快,我想将此代码转换为 C++。用于以元组为键的 python 字典的最佳 C++ 数据结构是什么?上述代码的 C++ 等价物是什么?
我查看了 boost 库中的稀疏矩阵,但找不到一种仅循环非零元素的简单方法。
【问题讨论】:
-
您是否考虑过另一种数据布局。如果 (i,j) 总是与 (j,i) 配对,那么您可能并不真的需要两者。您可以在构建字典时建立关联。您可以在入口存储( d(i,j), d(j,i) )中存储 (i,j) 的字典。这假设元组中的数字可以任意排序,这可能是正确的。
-
另外,如果您只是遍历元组,请将它们存储在一个列表中并遍历该列表。
标签: c++ python dictionary tuples