首页 > 其他分享 >unordered_map

unordered_map

时间:2024-03-31 15:44:26浏览次数:23  
标签:uint64 map hash splitmix64 static unordered

\(unordered\_map\) 的 \(hash\) 函数固定易被卡,于是采用自定义随机哈希函数 \(custom\_hash\)。

struct custom_hash {
    static uint64_t splitmix64(uint64_t x) {
        x += 0x9e3779b97f4a7c15;
        x = (x ^ (x >> 30)) * 0xbf58476d1ce4e5b9;
        x = (x ^ (x >> 27)) * 0x94d049bb133111eb;
        return x ^ (x >> 31);
    }

    size_t operator()(uint64_t x) const {
        static const uint64_t FIXED_RANDOM = chrono::steady_clock::now().time_since_epoch().count();
        return splitmix64(x + FIXED_RANDOM);
    }
};
unordered_map<int, int, custom_hash> mp;

标签:uint64,map,hash,splitmix64,static,unordered
From: https://www.cnblogs.com/xiojoy/p/18106806

相关文章

  • Hashmap源码什么要对hashcode做一次高16位异或低16位的操作
    翻译一下就是:计算键的hashCode()方法,并将其高几位通过异或操作传播到低位。因为哈希表使用二的幂次方进行掩码操作,那些仅在当前掩码位之上不同的哈希集将会一直发生冲突。(已知的例子包括在小表中保存连续整数的Float键集。)因此,我们应用了一种变换来将高位的影响向下传播。在速度......
  • ArcMap连接SQL Server2014与导入数据
    打开SOLServer2014ManagementStudio鼠标右键当前实例【属性】,查看并复制当前实例【名称】。在ArcMap的【目录】窗口中展开【数据库连接】,鼠标双击【添加数据库连接】,弹出【数据库连接】对话框【数据库平台】选择SQLServer,【实例】文本框中输入步骤1中获得的......
  • map/ multimap容器
    map/multimap容器1.1map基本概念简介:map中所有元素都是pairpair中第一个元素为key(键值),起到索引作用,第二个元素为value(实值)所有元素都会根据元素的键值自动排序本质:map/multimap属于关联式容器,底层结构是用二叉树实现。优点:可以根据key值快速找到value值map和mul......
  • resultMap映射null问题
    resultMap和resultTypeResultMap会将所有的自定义映射返回,实体类里不包含的字段也映射出来,且为nullresultMap存在的问题,你使用自定义映射集映射结果后,mapper返回的结果类型就成了自定义映射集的type当需要的结果只需要几个字段时,而返回类型建议使用ResultType,因为ResultMap映射......
  • Map集合的几种常见遍历方式
    keySet()for(Stringkey:map.keySet()){System.out.println(key);}values()for(Stringvalue:map.values()){System.out.println(value);}entrySet()for(Map.Entry<String,String>entry:map.entrySet()){Stringk=entry.getKey......
  • Redis Map数据结构中相同key不同的字段会分散多节点存储吗?
    目录结论说明 结论   无论是单实例Redis还是Redis集群,一个Map数据类型的key对应的所有字段和值都存储在同一台机器上。在Redis集群中,这是通过哈希槽机制来保证的,确保了对同一个key的操作不需要跨节点通信,从而提高了操作的效率。说明    Redis的Map数据类......
  • 6.Hadoop MapReduce
    6.1编辑WordCount.java创建wordcount测试目录 编辑WordCount.java输入下面代码:可以访问https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html查看importjava.io.IOException;importjava.util.String......
  • Qt显示图像之QGraphicsPixmapItem
    为防止不断地addItem导致内存增长,建议在初始化时newItem、scene->addItem。在合适的地方scene->removeItem(或scene->clear)或者item->setVisible。h头文件中#include<QGraphicsView>QGraphicsView*view;QGraphicsScene*scene;QGraphicsPixmapItem*m_pix=nullptr;cp......
  • C# Lambda Mapper
    场景在业务开发中,从仓储至应用,中间一般还有一层模型映射服务,其中的核心主键俺管他叫映射器(Mapper)。现在业界已经有很多Mapper的实现方案了,多为自实现如反射同名映射,或者使用大名鼎鼎的AutoMapper。AutoMapper底层是有一些优化的,比很多自实现的反射同名映射要快,反射会占用大量时......
  • KingbaseES LWLock buffer_mapping 等待
    在KingbaseES数据库中,会话在将数据块与共享缓冲池的缓冲区相关联时,会触发“LWLockbuffer_mapping”等待事件。这类事件涉及到一种轻量级锁(lwlock),类似于Oracle中的闩锁。这个锁在不同的数据库中可能有不同的名称,但通常被称为buffer_mapping或BufMappingLock。它主要用于实现对HAS......