gpt4 book ai didi

C++ 将一组整数变量映射到值的有效方法

转载 作者:搜寻专家 更新时间:2023-10-31 00:55:53 26 4
gpt4 key购买 nike

为了将一组整数变量映射到值(假设我有 a1, a2, a3, a4, a5, a6 来确定一个值 v 那是一个类似于 map<tuple<int, int, int, int, int, int>,VALUE_TYPE>map<struct{int, int, int, int, int, int},VALUE_TYPE> 的映射),我们可以用

  1. 以整数为键构造的字符串
  2. 元组作为键
  3. 结构或类作为键
  4. 等等...

我很好奇这些方法的性能。在我的情况下,

  1. 少插入,多查询
  2. 广泛但稀疏分布的整数键
  3. 时间更关心我,内存更少
  4. map 访问是最耗时的部分,因此即使是 10% 的加速也很重要

问题是哪种方式在我的情况下表现更好?
如果选择结构或类键,是否有任何技巧可以使比较器更有效?
unordered_map 是否更适合这种情况?我应该如何计算 key 的哈希值?

对于解决方案的任何建议或评论,我将不胜感激。也欢迎讨论更一般的情况。提前致谢。

最佳答案

基本上:实现不同的解决方案,编写性能测试程序并进行测量!

当然:

  • 将整数用作整数比将它们转换为字符串更快。
  • 结构(或类)应该比元组快(我的经验)。
  • 也试试 std::array<>容器(也已经提供了用于比较的运算符)。
  • 散列映射 (std::unordered_map<>) 比排序映射 (std::map<>) 更快,但当然只能在不需要使用部分键进行搜索时使用。

关于C++ 将一组整数变量映射到值的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41034121/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com