更有效的结构为unordered_map <pair <int,int>,int>

用户名

我有大约20,000,000pair<int, int>需要与ints关联我这样做了unordered_map<pair<int, int>, int>对我的算法进行性能分析表明,检查条目是否存在

bool exists = myMap[make_pair(a, b)] != NULL

是性能瓶颈。我以为从O(1)检索信息unordered_map非常快但是如果常数很大,常数时间可能会变慢...

我的哈希函数是

template <>
struct tr1::hash<pair<int, int> > {
public:
        size_t operator()(pair<int, int> x) const throw() {
             size_t h = x.first * 1 + x.second * 100000;
             return h;
        }
};

您知道我的问题有更好的数据结构吗?

显然,我不能仅将信息存储在矩阵中,因此内存容量无法容纳任何现有计算机。我所知道的所有分布myMap[make_pair(a, a)]都不存在a并且所有ints都在从0到大约20,000,000的连续范围内。

可以将其视为一个稀疏的20,000,000x20,000,000矩阵,其中包含大约20,000,000个条目,但永远不在主对角线上。

建议

将一vector<pair<int, int>>*(阵列Ñ预期的条目)要快?查找a将是微不足道的(只是数组的索引),然后我将遍历向量,将对的first值与进行比较b

大更新

我上传了原始数据,因此您可以看到结构。

用户名

作为suggestet,我去一个vector<pair<int, int>>*ñ条目。比大约快40%unordered_map

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C ++将pair <int,int>的向量复制到向量<int>

来自分类Dev

Inserting into map with types <int, vector<int>>

来自分类Dev

如何在vector <vector <pair <int,int>>>中插入vpii

来自分类Dev

Python浮动为int,而int为str

来自分类Dev

pair <int,int>的向量的哈希函数

来自分类Dev

C ++ map <int,vector <int>>分割错误

来自分类Dev

Swapping each pair of values in a multimap<int, int>

来自分类Dev

用于对std :: set <std :: pair <int,std :: pair <int,int >>>进行排序的比较函数

来自分类Dev

python中的c ++ map <int,int>

来自分类Dev

将两个整数序列匹配为一个std :: pair <int,int>

来自分类Dev

OCaml-给出类型为(int-> int)-> int的函数

来自分类Dev

C ++-流/输出格式为<int,pair <char,char >>的变体

来自分类Dev

unordered_map <int,int>如何处理否定元素?

来自分类Dev

如何迭代并从map <pair <string,int>,pair <string,Array >>查找?

来自分类Dev

Flutter:从int获得双精度值更有效

来自分类Dev

散列pair <pair <int,int>,pair <int,int >>的unordered_map

来自分类Dev

C ++不存在合适的构造函数来从“ int”转换为“ std :: pair <int,int>”

来自分类Dev

搜索具有上下限的map <pair <int,int>,...>

来自分类Dev

搜索具有上下限的map <pair <int,int>,...>

来自分类Dev

如何对向量<pair <string,pair <int,int >>>进行排序?

来自分类Dev

在C ++中获取格式为<pair <int,int>,int *>的映射的所有键

来自分类Dev

C ++ map <int,vector <int>>分割错误

来自分类Dev

vector <pair <int,int >>的比较器

来自分类Dev

从std :: map <std :: basic_string <char>,std :: pair <int,int(*)(const std :: vector :: Mat

来自分类Dev

C ++返回std :: pair <int *,int *>?

来自分类Dev

从SWIG绑定迭代python中返回的vector <pair <int,int >>

来自分类Dev

遍历 vector<vector<pair<int, int> > >

来自分类Dev

在 C++ 中的 multiset<pair<int,int> > 中寻找下界

来自分类Dev

无法在 C++ 中实现队列 <pair<int, int*> >

Related 相关文章

  1. 1

    C ++将pair <int,int>的向量复制到向量<int>

  2. 2

    Inserting into map with types <int, vector<int>>

  3. 3

    如何在vector <vector <pair <int,int>>>中插入vpii

  4. 4

    Python浮动为int,而int为str

  5. 5

    pair <int,int>的向量的哈希函数

  6. 6

    C ++ map <int,vector <int>>分割错误

  7. 7

    Swapping each pair of values in a multimap<int, int>

  8. 8

    用于对std :: set <std :: pair <int,std :: pair <int,int >>>进行排序的比较函数

  9. 9

    python中的c ++ map <int,int>

  10. 10

    将两个整数序列匹配为一个std :: pair <int,int>

  11. 11

    OCaml-给出类型为(int-> int)-> int的函数

  12. 12

    C ++-流/输出格式为<int,pair <char,char >>的变体

  13. 13

    unordered_map <int,int>如何处理否定元素?

  14. 14

    如何迭代并从map <pair <string,int>,pair <string,Array >>查找?

  15. 15

    Flutter:从int获得双精度值更有效

  16. 16

    散列pair <pair <int,int>,pair <int,int >>的unordered_map

  17. 17

    C ++不存在合适的构造函数来从“ int”转换为“ std :: pair <int,int>”

  18. 18

    搜索具有上下限的map <pair <int,int>,...>

  19. 19

    搜索具有上下限的map <pair <int,int>,...>

  20. 20

    如何对向量<pair <string,pair <int,int >>>进行排序?

  21. 21

    在C ++中获取格式为<pair <int,int>,int *>的映射的所有键

  22. 22

    C ++ map <int,vector <int>>分割错误

  23. 23

    vector <pair <int,int >>的比较器

  24. 24

    从std :: map <std :: basic_string <char>,std :: pair <int,int(*)(const std :: vector :: Mat

  25. 25

    C ++返回std :: pair <int *,int *>?

  26. 26

    从SWIG绑定迭代python中返回的vector <pair <int,int >>

  27. 27

    遍历 vector<vector<pair<int, int> > >

  28. 28

    在 C++ 中的 multiset<pair<int,int> > 中寻找下界

  29. 29

    无法在 C++ 中实现队列 <pair<int, int*> >

热门标签

归档