繁体   English   中英

std :: map键的最快类型?

[英]Fastest type for std::map key?

我想使用图形的分区作为std :: map的关键

我可以将其表示为节点的std向量。 或者我可以将它转换为更紧凑的“自定义”二进制格式(bitset?)或字符串表示。

为了简单起见,我们可以说图形的分区没有固有的顺序。

哪个在插入和查找方面最快(注意这个地图的大小将是十亿个节点的顺序)

保持你的密钥类型,但使用boost的unordered_map并为你的图分区编写自己的hash()函数。

例如,如果顺序无关紧要,则可以按顺序不变的方式对每个节点进行散列。 如果您现在发布编码方式,我们可以提供更多帮助。

如果您要拥有那么多条目并且性能至关重要,我建议绝对使用unordered_map

如果您使用的是C ++ 1x,那么它就在标准库中; 否则你可以从提升中获得它。

如果性能非常关键,您可以更进一步使用boost :: intrusive 它包含标准库容器的“侵入式”版本:它们复制您插入的值的指针而不是值本身。 如果值很大,您将获得巨大的性能优势。

可靠回答此问题的唯一方法是回答任何优化问题的唯一方法:尝试并查看。

也就是说,我怀疑这两者之间存在很大差异,只要有一个有效的比较运算符就可以使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM